我試圖獲取電池狀態。我用這個代碼:獲取電池電量
public class BatteryLevelReceiver extends BroadcastReceiver {
SharedPreferences prefs;
int scale = -1;
int level = -1;
@Override
public void onReceive(Context context, Intent intent) {
prefs = PreferenceManager.getDefaultSharedPreferences(context);
level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
// temp = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
// voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
float nivel = level/(float) scale;
Log.e("level",level+"");
Log.e("scale",scale+"");
Log.e("batteryLevel",nivel+"");
}
在AndroidManifest.xml
:
<uses-permission android:name="android.permission.BATTERY_STATS" />
<receiver android:name="com.spg.receiver.BatteryLevelReceiver" >
<intent-filter>
<action android:name="android.intent.action.BATTERY_LOW" />
<action android:name="android.intent.action.BATTERY_OKAY" />
</intent-filter>
</receiver>
與該代碼,我與那些線程有:
Get battery level and state in Android
BatteryManager stats not working on Android
但每次,級別和規模都有-1。
我不知道我錯過了什麼?
還有一些關於此的其他帖子...嘗試將'0'而不是'-1'作爲level的第二個參數= intent.getIntExtra(BatteryManager.EXTRA_LEVEL,-1); –
嗯實際上第二個參數是默認值,所以它會很有趣,看看它是什麼日誌,0或-1 ...然後至少你會知道意圖是否被正確觸發 –
我改變它爲0,現在,它總是讓我0,所以它進入廣播 –