2010-09-09 35 views
10

Tôi có thể phát hiện ra liệu ứng dụng của mình có đang chạy trên HTC Sense không?Làm thế nào để phát hiện HTC Sense?

Thông thường, vấn đề là, tôi có Nút có thể vẽ tùy chỉnh. Nó rất giống với trình chuyển đổi tài khoản ở trên cùng bên phải của ứng dụng Gmail. Khi được nhấn hoặc lấy nét, nút có điểm nhấn màu da cam. Nhưng điều đó không đẹp trên HTC Sense - bởi vì màu tiêu chuẩn nổi bật có màu xanh lá cây.

Trả lời

3

Cho phép xem chuỗi android.os.Build Tôi không chắc chắn những gì các folks HTC sử dụng kết hợp để chỉ một thiết bị HTC cảm giác ..

0

Bạn có thể thử tìm kiếm một HTC/ứng dụng Sense dựa trên Rosie khuôn khổ và không thể được gỡ cài đặt - hoặc có thể khung Rosie chính nó hiện diện sẽ là đủ. This thread cho biết cách tải danh sách các ứng dụng đã cài đặt.

+0

Và nếu bạn đi với phương pháp của Fred, có lẽ bạn có thể tìm thấy một ROM tách trên XDA Developers để kéo chuỗi xây dựng từ. – Josiah

1

Tôi nghĩ rằng Android đã cung cấp một cách tốt hơn để bạn giải quyết vấn đề này hơn là kiểm tra Sense và nó sẽ hoạt động với mọi nhà sản xuất thiết bị. HTC không phải là người duy nhất đã thay đổi màu sắc trên các bộ chọn. Tôi nghĩ rằng Sony Ericsson có màu trắng/xanh trong suốt, Motorola đã chuyển sang màu đỏ trong giao diện người dùng MotoBlur của họ, và Garmin-Asus đã thay đổi nó thành màu xanh lam chỉ trong vài giây.

Những gì bạn cần làm là ghi đè thuộc tính android:background trên nút hình ảnh của bạn và sử dụng thuộc tính có thể vẽ của riêng bạn thay vì dựa trên nền của khung có thể vẽ. Nếu bạn chưa quen với chúng, bạn có thể cũng muốn xem Selectors khi bạn tạo nền tùy chỉnh của mình, vì vậy bạn vẫn nhận được các dấu hiệu màu được chọn/đã chọn/không được chọn.

Nếu bạn có nhiều nút mà bạn muốn thực hiện việc này, bạn có thể muốn sử dụng kiểu và chủ đề để trợ giúp điều này. Hai địa điểm chính bạn sẽ muốn tham chiếu từ tài liệu Android là "Applying Styles and Themes" và "Style Resources"

Hy vọng điều đó sẽ hữu ích!

+0

Trong câu hỏi tôi đang nói rằng tôi sử dụng một tùy chỉnh drawable. Màu sắc nổi bật là màu da cam không trông giống "bản địa" trong HTC Sense. Không có cách nào dễ dàng để giải quyết điều này trong Android, bởi vì mỗi nhà sản xuất có thể có kiểu UI riêng của mình ... :(Tất cả những gì tôi có thể làm là phát hiện nếu tôi đang ở trên Sense và thiết lập màu xanh lá cây drawable. ngoài Sense, nhưng tôi chỉ muốn đối phó với Sense, bởi vì nó rất phổ biến, – fhucho

0

Tôi nghĩ rằng phương pháp sau đây cần được tuân thủ - chúng ta định nghĩa android:background, một cái gì đó giống như

<?xml version="1.0" encoding="UTF-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@drawable/pressed_application_background" /> 
    <item android:state_focused="true" android:state_window_focused="true" android:drawable="@drawable/focused_application_background" /> 
    <item android:state_focused="true" android:state_window_focused="false" android:drawable="@android:color/transparent" /> 
</selector> 

Nhưng ở đây chúng ta nên tham khảo một số tài nguyên tiêu chuẩn, không để những hình ảnh của ứng dụng của chúng tôi. Chỉ cần tìm ra id nào họ có.

+0

Tôi có thể sử dụng drawable trong Android. – fhucho

3

Dưới đây là link đề xuất cách phát hiện HTC Sense trên thiết bị, khoảng 1/3 cách thức thảo luận. Tôi đã thử nghiệm trên Desire và Desire Z.

Mã dưới (từ một người dùng: David):

private static final String SENSE_UI_LAUNCHER_NAME = 
      "com.htc.launcher.Launcher"; 
    private static Boolean senseUI; 

    public static final boolean isSenseUI(Context context) { 
     if (senseUI == null) { 
      senseUI = false; 
      PackageManager packageManager = context.getPackageManager(); 

      Intent intent = new Intent(Intent.ACTION_MAIN); 
      intent.addCategory(Intent.CATEGORY_HOME); 
      List<ResolveInfo> list = packageManager.queryIntentActivities(
        intent, PackageManager.MATCH_DEFAULT_ONLY); 
      for (ResolveInfo info : list) { 
       if (info.activityInfo != null 
         && SENSE_UI_LAUNCHER_NAME 
           .equals(info.activityInfo.name)) { 
        senseUI = true; 
        break; 
       } 
      } 
     } 
     return senseUI; 
    } 
0

Đây là hơi muộn, nhưng tôi nghĩ rằng giải pháp này có thể làm việc trên một số trường hợp người dân.

Tôi đã cố gắng sử dụng Build.MANUFACTURER để kiểm tra xem đó có phải là thiết bị HTC hay không. Giải pháp này không hoạt động trên một số thiết bị và chúng tôi có thể đảm bảo rằng thiết bị đang chạy Sense anyway

Nếu bạn nhận thấy, bạn có thể thấy Cửa hàng Play cần kiểm tra những tính năng nào có sẵn trên điện thoại để hiển thị ứng dụng chính xác và HTC Sense là một của các tính năng!

Để có được tất cả các tính năng có sẵn:

public FeatureInfo[] getSystemAvailableFeatures(Context context) { 
     FeatureInfo[] features = context.getPackageManager().getSystemAvailableFeatures(); 
     for (FeatureInfo f : features) { 
      Log.d("Features", "feature " + f.name); 
     } 
     return features; 
} 

này sẽ trở lại một cái gì đó như thế này:

com.example D/Features﹕ Feature android.hardware.wifi 
com.example D/Features﹕ Feature android.hardware.location.network 
com.example D/Features﹕ Feature com.sec.android.mdm 
com.example D/Features﹕ Feature android.hardware.location 
com.example D/Features﹕ Feature android.hardware.sensor.gyroscope 
com.example D/Features﹕ Feature android.hardware.screen.landscape 
com.example D/Features﹕ Feature com.htc.software.Sense5.0 

Chú ý dòng cuối cùng! Bạn có thể sử dụng nó để kiểm tra HTC Sense phiên bản

Hy vọng nó giúp

Các vấn đề liên quan