Определить GoogleTv из приложения Android - PullRequest
9 голосов
/ 02 июня 2011

Есть ли способ для приложения Android определить в коде Java, работает ли оно на GoogleTV против планшетов или телефонов?

Ответы [ 4 ]

10 голосов
/ 20 июля 2011

Вы можете спросить менеджера пакетов:

/**
 * 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");
}

Плюс эта строка манифеста:

<uses-feature android:name="com.google.android.tv" android:required="false" />
6 голосов
/ 13 августа 2015

Согласно официальным документам :

Рекомендуемый способ определить, работает ли ваше приложение на телевизионном устройстве, - это использовать метод UiModeManager.getCurrentModeType (), чтобы проверить, работает ли устройство в телевизионном режиме. В следующем примере кода показано, как проверить, работает ли ваше приложение на телевизионном устройстве:

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");
}
5 голосов
/ 02 июня 2011

Вам может помочь следующая ссылка: Руководство разработчика Google TV Android Чтобы оптимизировать ваше приложение для Google TV, просто добавьте дополнительный слой для больших экранов.Однако, если вы хотите определить устройство, которое в данный момент использует приложение во время выполнения, вы можете попробовать метод hasSystemFeature () .При этом вы можете проверить определенные аппаратные функции, которые являются уникальными для Google TV (например, вы можете протестировать FEATURE_TOUCHSCREEN, поскольку на любом устройстве, кроме Google TV, есть одна <=>, если функция не поддерживается, приложение, вероятно, работает на телевизоре).

1 голос
/ 02 июня 2011

Вот как я собираю полезную информацию для обратной связи. Я не знаю, возможно ли определить тип устройства (телефон, таблица против Google TV), но возможно создать какую-либо базу данных сопоставления и сопоставить информацию с ней

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();
}
...