編輯:關於Android編程
原文地址:http://android.xsoftlab.net/training/monitoring-device-state/docking-monitoring.html
Android設備可以被放置在若干種不同的擴展塢中。這些擴展塢包括汽車塢與家庭塢以及數字與模擬塢。其中塢的狀態與充電狀態非常相近,因為這些塢也提供了充電功能。
譯者提示:這裡說的塢是一種擴展設備,Android中比較少見,而蘋果設備比較常見。我們常見的蘋果設備的擴展塢就是蘋果體驗店所見的各種小型音響設備。
APP在何種塢中的運行頻率取決於APP自身。你可以在設備處於APP塢時提高運動類APP的更新頻率,或者設備處於汽車塢時完全關閉更新,或者也可以在APP在更新交通信息時將更新頻率提高至最大。
這些塢的狀態也同樣通過粘性Intent廣播獲取,它可以用來查詢是否被放置在了某個塢中,如果被放置了,那麼可以查詢是何種類型的塢。
當前塢的狀態被放置在粘性Intent中。因為它是粘性的,所以不需要注冊廣播接收器。你可以直接通過registerReceiver()方法直接獲得這個Intent。
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT); Intent dockStatus = context.registerReceiver(null, ifilter);
接下來則通過該Intent獲取當前塢的狀態:
int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1); boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
如果設備被放置在塢中,那麼它可能處於以下類型中:
- Car
- Desk
- 低端桌面塢(模擬)
- 高端桌面塢(數字)
注意後面這兩種類型只在Android 11中介紹到,所以只需要統一檢查後面這三種類型就可以:
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;
當設備被放置或移除塢時,系統會廣播一個ACTION_DOCK_EVENT。為了可以監測塢狀態的變化,只需要在清單文件中注冊一個廣播接收器就可以:
你可以在對應的廣播接收器內獲取塢的類型以及狀態。
一、首先說明:藍牙通信必須用手機測試,因為avd裡沒有相關的硬件,會報錯! 好了,看看最後的效果圖: 二、概述: 1.判斷是否支持BluetoothBluet
我在和ViewPager一起使用時,遇到了一些坑,按照官方給出的示例,我寫出來的代碼是這樣的布局代碼 java代碼public class MainActi
如圖是效果圖是仿餓了的點餐界面1.點擊左側的ListView,通過在在適配器中設置Item來改變顏色,再通過notifyDataSetInvalidated來刷新並用lv
Android中的AMS的職責是比較多的,其中一個比較重要的職責就是app進程的管理,比如我們調用startActivity方法啟動一個activity的時候,可能對應的