之前寫過一個桌面電池小控件,記得獲取電池信息使用BroadcastReceiver實現的,通常是在一個Service裏面,動態註冊一個BroadcastReceiver,用以監聽電池的電量信息。有時候,僅需要一次性的獲取電池電量信息,之前也是這麼做的,也即這個監控電池電量的BroadcastReceiver在剛註冊的時候,會立即獲取一次電池的信息,但是感覺這樣獲取不大好,於是就又Google了一下,結果在StackOverFlow上找到了一個完美的獲取電池電量的方法,雖然也是基於BroadcastReceiver,但是簡單了不少。
用下面的代碼就可以獲取到攜帶電池信息的Intent了,相當於註冊了一個空的BroadcastReceiver。
Intent batteryInfoIntent = context.getApplicationContext()
.registerReceiver( null ,
new IntentFilter( Intent.ACTION_BATTERY_CHANGED ) ) ;
接下來的信息的獲取就簡單了,各個字段的含義如果不明白請到Android Developers上看:
int status = batteryInfoIntent.getIntExtra( "status" , 0 );
int health = batteryInfoIntent.getIntExtra( "health" , 1 );
boolean present = batteryInfoIntent.getBooleanExtra( "present" , false );
int level = batteryInfoIntent.getIntExtra( "level" , 0 );
int scale = batteryInfoIntent.getIntExtra( "scale" , 0 );
int plugged = batteryInfoIntent.getIntExtra( "plugged" , 0 );
int voltage = batteryInfoIntent.getIntExtra( "voltage" , 0 );
int temperature = batteryInfoIntent.getIntExtra( "temperature" , 0 ); // 溫度的單位是10℃
String technology = batteryInfoIntent.getStringExtra( "technology" );
這樣,想什麼時候獲取就什麼時候獲取,想獲取幾次就獲取幾次。
後記:
放假了,XXX出去旅遊了,一個人在lab可沒意思。。。