電視硬件基本上不同于其他Android設(shè)備拥刻。電視不包含一些硬件特性相比于其他電視設(shè)備蹦哼,例如觸屏纪吮、相機(jī)、GPS萎胰。電視也完全依賴于二次硬件設(shè)備碾盟。為了使用戶和應(yīng)用之間能夠交互,必須使用遠(yuǎn)程遙或者游戲手柄技竟。當(dāng)你創(chuàng)建電視應(yīng)用時(shí)冰肴,你必須仔細(xì)考慮硬件的局限性和操作電視硬件的要求。
檢查電視設(shè)備
如果你創(chuàng)建的應(yīng)用既操作電視設(shè)備也操作非電視設(shè)備榔组,你可能需要檢查你的應(yīng)用當(dāng)前運(yùn)行在那種設(shè)備上來(lái)進(jìn)行調(diào)整熙尉。例如,如果你有一個(gè)可以通過(guò)意圖啟動(dòng)的應(yīng)用程序搓扯,你的應(yīng)用程序應(yīng)該檢查設(shè)備屬性检痰,以確定它是否應(yīng)該啟動(dòng)面向電視的活動(dòng)或電話活動(dòng)。推薦的方法是使用UiModeManager.getCurrentModeType()方法來(lái)檢查當(dāng)前設(shè)備是否正以電視模式運(yùn)行锨推,以確定您的應(yīng)用程序是否正運(yùn)行在電視設(shè)備上铅歼。判斷代碼如下:
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")
}
處理不支持的硬件特性
根據(jù)你的應(yīng)用程序的設(shè)計(jì)和功能,你可能?chē)@某些不可用的硬件特性工作换可。本節(jié)的主要內(nèi)容為硬件特性通常不適用于電視椎椰,如何檢測(cè)丟失的硬件功能,建議使用這些特性的替代品沾鳄。
不支持電視的硬件特性
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"/>
聲明包含硬件特性的權(quán)限
permission.png
檢查硬件特性
下面的代碼示例演示如何在運(yùn)行時(shí)檢測(cè)硬件特性的可用性:
// 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.");
}