Identificar GoogleTv desde la aplicación de Android
¿Hay alguna forma de que una aplicación de Android diga en el código Java si se está ejecutando en GoogleTV vs tabletas o teléfonos?
- Errores de instalación: INSTALL_FAILED_INSUFFICIENT_STORAGE
- Apertura de vídeo RTSP en VideoView
- Dispositivos Android: asura, águila y ka
- ¿Puedo mostrar el canal de TV actual en una aplicación de pantalla completa de googleTV?
- Android Studio / Win8 / ERR_NAME_NOT_RESOLVED
- ¿Cómo puedo obtener OnClickListener trabajando en una vista personalizada con RelativeLayout?
- Procesamiento de vídeo en Android 3.x / Google TV / SDK: Marco de vídeo a SurfaceTexture / OpenGL / GLSL
- Mecanismo para que las aplicaciones muestren su contenido de imagen en 4k nativo
- Google TV: Dispositivos Android compatibles 0 dispositivos
- Android TV no está iniciando LAUNCH_LEANBACK Actividad
- Activar el monitor desde la aplicación de Google TV
- ¿Necesita Google TV cosas como WakeLocks?
- Cómo puede acceder a la memoria externa en Google TV
El siguiente enlace puede ayudarte: Guía del programador para Android de Google TV Para optimizar tu aplicación para Google TV, solo agrega un aspecto adicional para pantallas grandes. Sin embargo, si desea determinar el dispositivo que está utilizando actualmente la aplicación en tiempo de ejecución, puede probar el método hasSystemFeature () . Con esto puedes probar ciertas características de hardware que son exclusivas de Google TV (por ejemplo, puedes probar FEATURE_TOUCHSCREEN, ya que cualquier dispositivo pero Google TV tiene uno <=> si la función no es compatible, es probable que la aplicación se esté ejecutando en un televisor) .
Puede pedirle al gestor de paquetes:
/** * Test if this device is a Google TV. * * See 32:00 in "Google I/O 2011: Building Android Apps for Google TV" * http://www.youtube.com/watch?v=CxLL-sR6XfM * * @return true if google tv */ public static boolean isGoogleTV(Context context) { final PackageManager pm = context.getPackageManager(); return pm.hasSystemFeature("com.google.android.tv"); }
Además de esta línea de manifiesto:
<uses-feature android:name="com.google.android.tv" android:required="false" />
Según los documentos oficiales :
La forma recomendada de determinar si su aplicación se ejecuta en un dispositivo de TV es utilizar el método UiModeManager.getCurrentModeType () para comprobar si el dispositivo se está ejecutando en modo de televisión. El código de ejemplo siguiente muestra cómo comprobar si su aplicación se está ejecutando en un dispositivo de TV:
public static final String TAG = "DeviceTypeRuntimeCheck"; UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE); if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION) { Log.d(TAG, "Running on a TV Device"); } else { Log.d(TAG, "Running on a non-TV Device"); }
Aquí es cómo recojo información útil para la retroalimentación. No soy consciente de si es posible detectar el tipo de dispositivo (teléfono, vs mesa, vs Google TV), pero es posible construir algún tipo de base de datos de mapas y coincidir con la información contra ella
private String getDeviceInfo() { final StringBuilder sb = new StringBuilder("\n\n---\n"); try { sb.append("Version: ").append(getPackageManager().getPackageInfo(this.getPackageName(), 0).versionName) .append('\n'); } catch (final NameNotFoundException e) { // Shouldn't happen but if did - ignore Log.e(TAG, "failed to get app version", e); } sb.append("Model: ").append(Build.MODEL).append('\n'); sb.append("Brand: ").append(Build.BRAND).append('\n'); sb.append("Device: ").append(Build.DEVICE).append('\n'); sb.append("Display: ").append(Build.DISPLAY).append('\n'); sb.append("Hardware: ").append(Build.HARDWARE).append('\n'); sb.append("Manufacturer: ").append(Build.MANUFACTURER).append('\n'); sb.append("Host: ").append(Build.HOST).append('\n'); sb.append("Release: ").append(Build.VERSION.RELEASE).append('\n'); sb.append("Board: ").append(Build.BOARD).append('\n'); sb.append("Radio: ").append(Build.RADIO).append('\n'); sb.append("Product: ").append(Build.PRODUCT).append('\n'); return sb.toString(); }