Как проверить, работает ли приложение на Android-телевизоре

Есть ли способ проверить, работает ли приложение на Android TV или Android Mobile?

Я знаю, как проверить запущенную сборку. Я хочу начать определенную службу, если приложение работает на Android TV против Mobile. Был надеяться разместить двоих в той же библиотеке.

Ответ 1

Некоторые параметры:

1) Запросить систему для большого экрана

2) Использовать отражение для определения определенных классов ТВ

3) Используйте hasSystemFeature, чтобы обнаружить отсутствие сенсорного экрана

Дополнительная информация

https://developer.android.com/training/tv/start/hardware.html

И аналогичный ответ для Google TV

Определите GoogleTv из приложения Android

Ответ 2

Из Обработки ТВ оборудования в Android Документах:

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

Ответ 3

private boolean isDirectToTV() {
  return(getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEVISION)
      || getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK));
}

Это вернет true, если устройство рекламирует себя как имеющее функции android.hardware.type.television или android.software.leanback. Android TV и Fire TV справляются с этим правильно; Я еще не пробовал это в другой среде.