如何检查应用是否在Android TV上运行

lea*_*ist 17 android android-tv

有没有办法检查应用是否在Android TV或Android Mobile上运行?

我知道如何检查正在运行的构建.如果应用程序在Android TV和Mobile上运行,我想启动特定服务.希望把两个人放在同一个图书馆里.

ms_*_*s_b 32

处理 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");
}
Run Code Online (Sandbox Code Playgroud)

  • 这正是谷歌提到的。 (2认同)

Com*_*are 17

private boolean isDirectToTV() {
  return(getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEVISION)
      || getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK));
}
Run Code Online (Sandbox Code Playgroud)

true如果设备宣称自己具有android.hardware.type.television或具有android.software.leanback系统功能,则会返回此选项.Android TV和Fire TV正确处理这个问题; 我还没有尝试过其他环境.


Rob*_*ill 5

一些选项是:

1)查询系统大屏

2)使用反射来检测电视特定类别

3) 使用hasSystemFeature检测是否缺少触摸屏

更多信息

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

以及 Google TV 的类似答案

从 Android 应用识别 GoogleTv

  • Android 团队建议以这种方式检查 androidTV https://developer.android.com/training/tv/start/hardware.html (3认同)