電視硬件基本上不同于其他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.");
}