Pages

2011年11月10日 星期四

[Froyo] Airplane Mode

        Airplane Mode 開啟就會斷掉所有通訊 (BT、WiFi、3G)。在 Android 上,這個功能要能夠正常運作,必須有 3G module。過程如下:


  • packages/apps/Settings/src/com/android/settings/AirplaneModeEnabler.java
  • onPreferenceChange 呼叫 setAirplaneModeOnsetAirplaneModeOn
    • Disable UI
    • Set Settings.System.AIRPLANE_MODE_ON to 0 or 1
    • Broadcast ACTION_AIRPLANE_MODE_CHANGED intent
  • 收到 EVENT_SERVICE_STATE_CHANGED 事件時,呼叫 onAirplaneModeChanged
  • 檢查 serviceState.getState() == ServiceState.STATE_POWER_OFF
  • 更新 UI 上面的 checkbox
  • Enable UI
當開啟 airplane mode,狀態不等於 STATE_POWER_OFF,導致 UI 上面的 checkbox 會勾不起來。所以在 onAirPlaneModeChanged,改成判斷 Settings.System.AIRPLANE_MODE_ON
boolean airplaneModeEnabled;

if (Settings.System.getInt(mContext.getContentResolver(), 
    Settings.System.AIRPLANE_MODE_ON, 0)==1)
{
    airplaneModeEnabled = true;
} else {
    airplaneModeEnabled = false;
}

參考資料

沒有留言:

 
Blogger Templates