美文网首页
Android TV (二)(处理电视硬件)

Android TV (二)(处理电视硬件)

作者: fengfancky | 来源:发表于2017-11-28 11:17 被阅读553次

    官方地址 镜像地址

    电视硬件基本上不同于其他Android设备。电视不包含一些硬件特性相比于其他电视设备,例如触屏、相机、GPS。电视也完全依赖于二次硬件设备。为了使用户和应用之间能够交互,必须使用远程遥或者游戏手柄。当你创建电视应用时,你必须仔细考虑硬件的局限性和操作电视硬件的要求。

    检查电视设备

    如果你创建的应用既操作电视设备也操作非电视设备,你可能需要检查你的应用当前运行在那种设备上来进行调整。例如,如果你有一个可以通过意图启动的应用程序,你的应用程序应该检查设备属性,以确定它是否应该启动面向电视的活动或电话活动。推荐的方法是使用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")
    }
    

    处理不支持的硬件特性

    根据你的应用程序的设计和功能,你可能围绕某些不可用的硬件特性工作。本节的主要内容为硬件特性通常不适用于电视,如何检测丢失的硬件功能,建议使用这些特性的替代品。

    不支持电视的硬件特性

    hardware.png

    声明电视的硬件要求

    <uses-feature android:name="android.hardware.touchscreen"
        android:required="false"/>
    <uses-feature android:name="android.hardware.faketouch"
        android:required="false"/>
    <uses-feature android:name="android.hardware.telephony"
        android:required="false"/>
    <uses-feature android:name="android.hardware.camera"
        android:required="false"/>
    <uses-feature android:name="android.hardware.nfc"
        android:required="false"/>
    <uses-feature android:name="android.hardware.location.gps"
        android:required="false"/>
    <uses-feature android:name="android.hardware.microphone"
        android:required="false"/>
    <uses-feature android:name="android.hardware.sensor"
        android:required="false"/>
    

    声明包含硬件特性的权限

    permission.png

    检查硬件特性

    下面的代码示例演示如何在运行时检测硬件特性的可用性:

    // Check if the telephony hardware feature is available.
    if (getPackageManager().hasSystemFeature("android.hardware.telephony")) {
        Log.d("HardwareFeatureTest", "Device can make phone calls");
    }
    // Check if android.hardware.touchscreen feature is available.
    if (getPackageManager().hasSystemFeature("android.hardware.touchscreen")) {
        Log.d("HardwareFeatureTest", "Device has a touch screen.");
    }

    相关文章

      网友评论

          本文标题:Android TV (二)(处理电视硬件)

          本文链接:https://www.haomeiwen.com/subject/xijhxxtx.html