我正在開發一個應用程序,我需要從服務中監視剩餘電池的百分比。有人可以告訴我該怎麼做嗎?我發現一些示例代碼正在從活動中獲取電池狀態,而不是從服務中獲取電池狀態。從Android中的服務獲取電池狀態
謝謝。
我正在開發一個應用程序,我需要從服務中監視剩餘電池的百分比。有人可以告訴我該怎麼做嗎?我發現一些示例代碼正在從活動中獲取電池狀態,而不是從服務中獲取電池狀態。從Android中的服務獲取電池狀態
謝謝。
有什麼區別? 您應該能夠在服務中爲電池事件註冊一個接收器,就像您進行一項活動一樣。例如:
private final BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
int rawLevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int status = intent.getIntExtra("status", -1);
// Do something
}
};
public void onCreate() {
registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
public void onDestroy() {
unregisterReceiver(this.mBatInfoReceiver);
}
使用ACTION_BATTERY_CHANGED。每當電池值發生變化時都會調用它。 請參見下面的代碼,看看它是如何做:
public void onCreate()
{
this.registerReceiver(this.mBatInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context arg0, Intent intent) {
int level = intent.getIntExtra("level", 0);
Log.e("test", String.valueOf(level) + "%");
}
};
public void onDestroy(){
// unregister receiver
this.unregisterReceiver(this.mBatInfoReceiver);
}
我認爲你必須使用ACTION_BATTERY_CHANGED。請注意,這是一個粘性意圖,所以您不需要直接在廣播接收機中監視它。您可以直接從活動中獲取參考。
從Android文檔:
因爲這是一個棘手的意圖,你不需要通過廣播接收器,簡單地調用registerReceiver在空傳遞作爲接收器如圖所示,在未來片段來註冊,目前的電池狀態意圖被返回。
http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
你絕對可以做到這一點通過廣播接收器:http://developer.android.com/training/monitoring-device-state/battery-monitoring.html – Christopher
馬克的答案接受PLZ – tobias