原創(chuàng)不易昆烁,尊重作者吊骤,轉(zhuǎn)載請注明出處
前言
如果你初步開發(fā)TV端,那么你首先需要了解一些有關(guān)Android TV APP小知識點静尼。
目錄
- 對電視硬件的認知
- 檢查APP運行的環(huán)境是否是TV端
- 通常TV端不支持的硬件特性
- 控制器斷開重連
對電視硬件的認知
不同于在手機上開發(fā)App白粉,大多數(shù)電視沒有手機那么多豐富的硬件特性,例如觸屏鼠渺、攝像頭鸭巴、GPS等功能,我們在使用電視時拦盹,一般都是借助遙控器或游戲手柄等外設(shè)鹃祖。當我們開發(fā)TV端的App時,需要考慮電視的硬件支持普舆。
檢查APP運行的環(huán)境是否是TV端
/**
* 是否運行在TV端
* @param context
* @return
*/
public static boolean isRunTvClient(Context context) {
UiModeManager uiModeManager = (UiModeManager) context.getSystemService(Context.UI_MODE_SERVICE);
return uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION;
}
TV端可能不支持的硬件特性
如下表所示:
功能 | 硬件 | 描述符號 |
---|---|---|
觸摸屏 | Touchscreen | android.hardware.touchscreen |
模擬點擊 | Touchscreen emulator | android.hardware.faketouch |
電話 | Telephony | android.hardware.telephony |
相機 | Camera | android.hardware.camera |
NFC | Near Field Communications | android.hardware.nfc |
定位 | GPS | android.hardware.location.gps |
麥克風 | Microphone | android.hardware.microphone |
傳感器 | Sensors | android.hardware.sensor |
縱向屏幕 | Screen in portrait orientation | android.hardware.screen.portrait |
Tips:智能電視一般遙控器會有麥克風恬口,不同于電視中的麥克風硬件,遙控器的麥克風是完全支持的奔害,家里有智能電視的朋友應(yīng)該更清楚楷兽。
如果我們的App只是在TV端運行,那么在開發(fā)中华临,我們應(yīng)該檢查AndroidManifest芯杀,因為如果在AndroidManifest中有申明了電視不支持的特性,那么很有可能會阻止安裝在TV端上雅潭。我們可以通過以下代碼來申明不使用該硬件特性揭厚。
<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" />
隨著電視硬件的升級,有些硬件特性被應(yīng)用在智能電視端中扶供,例如攝像頭筛圆、麥克風功能等(例如華為智慧屏),那么當我們需要使用某些特性時椿浓,就需要手動去檢查是否支持太援,這樣才能適配不同的電視端闽晦。
/**
* 如果TV端支持攝像頭
*/
if (context.getPackageManager().hasSystemFeature("android.hardware.camera")) {
} else {
}
控制器斷開重連
大多數(shù)智能電視的遙控器或者游戲手柄都是藍牙連接,這些設(shè)備可能為了省電在一定時間無操作的情況下會進入睡眠模式導(dǎo)致與TV端斷開連接提岔。如果我們沒有處理連接事件仙蛉,這可能會導(dǎo)致我們的App被中斷或重啟,以下方式是常見的斷開情景:
- 看視頻電影時
- 等待游戲開始時碱蒙,另一名玩家使用是不同的游戲控制器
- 當在游戲中時荠瘪,玩家離開游戲并斷開游戲控制器
解決辦法也很簡單,我們可以在AndroidManifest中對Activity通過configChanges配置相應(yīng)的變化
<activity android:name="com.fynnjason.tv.MainActivity"
android:configChanges="navigation"
android:theme="@style/AppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>