¿Cómo detectar HTC Sense?
¿Puedo detectar de alguna manera si mi aplicación se está ejecutando en HTC Sense?
Más generalmente, el problema es, que tengo un botón con la costumbre drawable. Es algo muy similar al conmutador de cuentas en la parte superior derecha de la aplicación de Gmail. Cuando se presiona o enfoca, el botón tiene resaltado naranja. Pero eso no se ve bien en HTC Sense – porque el color de resaltado estándar hay verde.
- Android: las trampas de eliminar carpetas ldpi / mdpi
- Mostrar iconos en el menú de opciones al usar Theme.Holo
- NullPointerException en android.widget.AbsListView.contentFits (AbsListView.java:722)
- ¿Cómo abrir el teclado numérico cuando haga clic en EditText?
- Icono flotante en otras aplicaciones
- Dos estilos diferentes en un solo textview con diversa gravedad y hieght
- ¿Hay herramientas de interfaz de usuario personalizadas para Android?
- ¿Cómo puedo crear un widget de interfaz de usuario de diseño de material de Android?
- Ver fuera de los límites de un cuadro de diálogo
- ACTION_INSTALL_PACKAGE
- Cómo crear este efecto de aplicación de Gmail en Honeycomb
- Style Android SearchView Desplegable popup
- android - UI como deslizamiento hacia abajo barra de notificación
Vamos a ver las cadenas android.os.Build No estoy seguro de lo que la gente de HTC utilizar una combinación para indicar un dispositivo HTC sentido ..
Aquí está un acoplamiento que sugiere una manera de detectar Sentido de HTC en el dispositivo, cerca de 1/3 la manera abajo de la discusión. He probado en Desire and Desire Z.
El código está abajo (de un usuario: 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; }
Creo que Android ha proporcionado una mejor manera para que usted resuelva esto que haciendo una comprobación para Sense, y trabajará para cada fabricante del dispositivo. HTC no es el único que ha cambiado los colores en los selectores. Creo que Sony Ericsson tiene un transparente blanco / azul, Motorola cambió a rojo en su MotoBlur UI, y Garmin-Asus lo cambió a azul en la suya sólo para nombrar unos pocos.
Lo que debes hacer es anular el atributo android:background
en tu botón de imagen y usar un drawable propio en vez de confiar en el fondo del framework drawable. Si aún no está familiarizado con ellos, probablemente también desee echar un vistazo a los selectores cuando cree su fondo personalizado, por lo que aún obtendrá las claves de color presionadas / seleccionadas / no seleccionadas.
Si tiene varios botones en los que desee hacer esto, puede utilizar estilos y temas para ayudar con esto. Los dos lugares principales que querrá hacer referencia desde la documentación de Android son " Aplicación de estilos y temas " y " Recursos de estilo "
¡Espero que ayude!
Usted podría intentar buscar una aplicación de HTC / Sense que se basa en el marco de Rosie y no se puede desinstalar – o tal vez el propio marco Rosie estar presente sería suficiente. Este hilo muestra cómo obtener una lista de aplicaciones instaladas.
Creo que el siguiente enfoque debe seguirse – definimos android:background
, algo así como
<?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>
Pero aquí debemos referirnos a algunos recursos estándar, no a las imágenes de nuestra aplicación. Sólo tienes que averiguar qué identificaciones tienen.
Esto es un poco tarde, pero creo que esta solución podría funcionar en algunos casos de personas.
Intenté usar Build.MANUFACTURER para comprobar si es un dispositivo de HTC. Esta solución no funciona en algunos dispositivos y podemos asegurarnos de que los dispositivos están ejecutando Sense de todos modos
Si observa, puede ver Play Store necesita comprobar qué funciones están disponibles en el teléfono para mostrar las aplicaciones correctas, y HTC Sense es una de las características!
Para obtener todas las funciones disponibles:
public FeatureInfo[] getSystemAvailableFeatures(Context context) { FeatureInfo[] features = context.getPackageManager().getSystemAvailableFeatures(); for (FeatureInfo f : features) { Log.d("Features", "feature " + f.name); } return features; }
Esto devolverá algo como esto:
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
¡Observe la última línea! Puede usarlo para comprobar la versión de sentido HTC
Espero eso ayude
- Comportamiento de pausa de MediaPlayer ()
- ¿Qué precauciones y advertencias debemos conocer al usar el nuevo "APK Signature Scheme v2"?