Android官方开发文档Training系列课程中文版:电池续航时间优化之检查与监测坞的状态与类型
原文地址:http://android.xsoftlab.net/training/monitoring-device-state/docking-monitoring.html
Android設(shè)備可以被放置在若干種不同的擴(kuò)展塢中。這些擴(kuò)展塢包括汽車塢與家庭塢以及數(shù)字與模擬塢。其中塢的狀態(tài)與充電狀態(tài)非常相近,因?yàn)檫@些塢也提供了充電功能。
譯者提示:這里說(shuō)的塢是一種擴(kuò)展設(shè)備,Android中比較少見,而蘋果設(shè)備比較常見。我們常見的蘋果設(shè)備的擴(kuò)展塢就是蘋果體驗(yàn)店所見的各種小型音響設(shè)備。
APP在何種塢中的運(yùn)行頻率取決于APP自身。你可以在設(shè)備處于APP塢時(shí)提高運(yùn)動(dòng)類APP的更新頻率,或者設(shè)備處于汽車塢時(shí)完全關(guān)閉更新,或者也可以在APP在更新交通信息時(shí)將更新頻率提高至最大。
這些塢的狀態(tài)也同樣通過(guò)粘性Intent廣播獲取,它可以用來(lái)查詢是否被放置在了某個(gè)塢中,如果被放置了,那么可以查詢是何種類型的塢。
檢查當(dāng)前塢的狀態(tài)
當(dāng)前塢的狀態(tài)被放置在粘性Intent中。因?yàn)樗钦承缘?#xff0c;所以不需要注冊(cè)廣播接收器。你可以直接通過(guò)registerReceiver()方法直接獲得這個(gè)Intent。
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT); Intent dockStatus = context.registerReceiver(null, ifilter);接下來(lái)則通過(guò)該Intent獲取當(dāng)前塢的狀態(tài):
int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1); boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;檢查當(dāng)前塢的類型
如果設(shè)備被放置在塢中,那么它可能處于以下類型中:
- Car
- Desk
- 低端桌面塢(模擬)
- 高端桌面塢(數(shù)字)
注意后面這兩種類型只在Android 11中介紹到,所以只需要統(tǒng)一檢查后面這三種類型就可以:
boolean isCar = dockState == EXTRA_DOCK_STATE_CAR; boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK || dockState == EXTRA_DOCK_STATE_LE_DESK ||dockState == EXTRA_DOCK_STATE_HE_DESK;監(jiān)測(cè)塢的狀態(tài)以及類型的變化
當(dāng)設(shè)備被放置或移除塢時(shí),系統(tǒng)會(huì)廣播一個(gè)ACTION_DOCK_EVENT。為了可以監(jiān)測(cè)塢狀態(tài)的變化,只需要在清單文件中注冊(cè)一個(gè)廣播接收器就可以:
<action android:name="android.intent.action.ACTION_DOCK_EVENT"/>你可以在對(duì)應(yīng)的廣播接收器內(nèi)獲取塢的類型以及狀態(tài)。
總結(jié)
以上是生活随笔為你收集整理的Android官方开发文档Training系列课程中文版:电池续航时间优化之检查与监测坞的状态与类型的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ScrollView嵌套EditText
- 下一篇: Android官方开发文档Trainin