Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 電源管理專題之獲取和監測Dock狀態和類型

Android 電源管理專題之獲取和監測Dock狀態和類型

編輯:Android開發實例

Android 設備可以接在不同類型的 Dock 底座中,其中包括車載的,家用的,以及數字的和模擬的。許多 Dock 基座都能為接在其上面的設備供電,所以,“dock-state”(Dock狀態)也通常是接入設備的充電狀態。

Dock 狀態的變化如何影響您應用程序的服務更新速度取決於您應用程序的設計。假如是一個獲取體育賽況的應用程序,那麼在 “desktop dock” 狀態時,可以提高其數據的更新頻率,而當在 “car docked” 狀態時,可以完全禁用數據的更新。相反,假如該應用程序是用來獲取當前交通路況的,那麼就應當在“car docked” 狀態時選擇最大限度提高數據的更新速度。

系統會廣播 “sticky” 類型的 Dock 狀態通知 Intent,您可以通過該 Intent 來查詢設備當前是否在 Dock 狀態,以及具體的 Dock 類型。

獲得當前的 Dock 狀態

Dock 狀態的詳細信息可以從 Action 為 ACTION_DOCK_EVENT 中的廣播數據中取得,因為廣播類型是 “sticky”的,您不需要自己定義 BroadcastReceiver ,只需要調用 registerReceiver() 方法,並且傳入空的參數null就可以了。

該方法的返回值 intent 就包括了當前 Dock 狀態的詳細信息。

示例代碼:

IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);

您可以通過鍵值 EXTRA_DOCK_STATE 來取得當前的 Dock 狀態。

示例代碼:

int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

獲得當前的Dock 類型

如果設備當前在Dock狀態,那麼目前支持的Dock類型如下:

  1. Car (車載)
  2. Desk(家用,桌面)
  3. Low-End (Analog) Desk (低端模擬)
  4. High-End (Digital) Desk (高端數字)

請注意後面的兩種Dock類型只支持Android API Level 11以上,所以較好的方法是只需要區分大的 dock 類型,而不用去具體關注是數字的,還是模擬的。

示例代碼:

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;

監測 Dock 狀態和類型的變更

每當 Andoid 設備在 Dock 和非 Dock 狀態之間切換的時候(即設備接入底座和從底座拔出),系統就會廣播 Action 為 ACTION_DOCK_EVENT 的廣播。要想在應用程序中捕捉這種狀態的變化,您只需要注冊一個自定義的廣播接收器Receiver就可以了。

示例代碼:

<action android:name="android.intent.action.ACTION_DOCK_EVENT"/>

您可以在Receiver的代碼實現中獲取當前Dock的詳細信息,具體方法參照前面的步驟。

參考文摘:
http://developer.android.com/training/monitoring-device-state/docking-monitoring.html

 

轉自:http://blog.zhourunsheng.com/2011/12/android-%e7%94%b5%e6%ba%90%e7%ae%a1%e7%90%86%e4%b8%93%e9%a2%98%e4%b9%8b%e8%8e%b7%e5%8f%96%e5%92%8c%e7%9b%91%e6%b5%8bdock%e7%8a%b6%e6%80%81%e5%92%8c%e7%b1%bb%e5%9e%8b/ | 潤物無聲

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved