2011-06-02 86 views
7

我希望能夠檢測設備是否插入。我希望能夠以與連接狀態相同的方式進行查詢。這是可能的還是我需要創建一個廣播接收機來監聽電池事件?檢測正在插入的設備

回答

20

顯然ACTION_BATTERY_CHANGED是一個「粘性廣播」,這意味着您可以註冊並在廣播後的任何時間接收它。要獲得插入狀態,您可以執行如下操作:

public void onCreate() { 
    BroadcastReceiver receiver = new BroadcastReceiver() { 
     public void onReceive(Context context, Intent intent) { 
      int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); 
      if (plugged == BatteryManager.BATTERY_PLUGGED_AC) { 
       // on AC power 
      } else if (plugged == BatteryManager.BATTERY_PLUGGED_USB) { 
       // on USB power 
      } else if (plugged == 0) { 
       // on battery power 
      } else { 
       // intent didnt include extra info 
      } 
     } 
    }; 
    IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); 
    registerReceiver(receiver, filter); 
} 
+0

這是完美的!謝謝!我唯一想到的是將'unregisterReceiver(this);'添加到'onReceive()'方法。 – CaseyB 2011-06-02 18:04:55

+0

我注意到,當設備連接到電源但電池已充滿電時,EXTRA_PLUGGED包含0。有沒有辦法檢測到它仍然連接到AC,以便我可以忽略EXTRA_PLUGGED? – 2016-10-10 12:38:14