2011-06-02 19 views
8

¿Hay alguna manera de que una aplicación de Android cuente en el código de Java si se está ejecutando en GoogleTV frente a tabletas o teléfonos?Identificar GoogleTv desde la aplicación de Android

+1

Dado que, en el momento de escribir esto, no podemos escribir aplicaciones para Google TV, la respuesta es "si su El código de Java se está ejecutando, no está en Google TV ". Recomiendo preguntar nuevamente en algún momento después de que podamos escribir aplicaciones para Google TV. – CommonsWare

+0

Tengo uno de los dispositivos "fishtank". Editaré la pregunta para reflejar eso. – miguel

Respuesta

5

El siguiente enlace puede ayudarlo: Google TV Android Developer's Guide Para optimizar su aplicación para un televisor de Google, simplemente agregue un límite 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 puede probar ciertas características de hardware que son exclusivas de Google TV (por ejemplo, podría probar FEATURE_TOUCHSCREEN, ya que cualquier dispositivo, excepto Google TV, tiene uno < => si la característica no es compatible, la aplicación probablemente se está ejecutando en un televisor) .

+0

¿No hay teléfonos con trackball de gama baja que tampoco tienen pantalla táctil? – miguel

+2

[Aquí] (http://code.google.com/tv/android/docs/gtv_android_features.html) hay algunas características más que no existen en los televisores. Si los combina, puede estar seguro de en qué tipo de dispositivo se ejecuta su aplicación. Pero no puedo decir nada con seguridad, ya que no tengo un Google TV solo. –

+1

@miguel: en este momento, todos los teléfonos con Android Market legítimamente en ellos tienen una pantalla táctil, como lo exige el CDD. Sin embargo, eso no excluye teléfonos sin Market, teléfonos con copias pirateadas del Market o futuros cambios en el CDD. – CommonsWare

1

Así es como recopilo información útil para los comentarios. No estoy al tanto si es posible detectar el tipo de dispositivo (teléfono, frente a la mesa, frente a Google TV), pero es posible construir una especie de base de datos de la cartografía y la Información de partido en contra de 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(); 
} 
10

Usted puede pedir el 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"); 
} 

Plus esta línea manifiesta:

<uses-feature android:name="com.google.android.tv" android:required="false" /> 
+0

Esto ya no funciona – Prizoff

4

de acuerdo con la oficial docs:

La forma recomendada de determinar si su aplicación se está ejecutando 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 siguiente código de ejemplo 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"); 
} 
+0

¡Me funciona bien! –

Cuestiones relacionadas