如果我们注册了对Intent.ACTION_BATTERY_CHANGED的监听,那么我们马上会收到一个Action为Intent.ACTION_BATTERY_CHANGED的intent,之后只要我们没有取消监听,电池发送变化,我们会收到这样的intent.
通过该intent的extra我们可以取得电池的很多信息,比如电压/ 当前电池的健康状况 等等。
比如电压可以用如下的方式:
int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
可能的取值:
BATTERY_HEALTH_COLD
BATTERY_HEALTH_DEAD
BATTERY_HEALTH_GOOD
BATTERY_HEALTH_OVERHEAT
BATTERY_HEALTH_OVER_VOLTAGE
BATTERY_HEALTH_UNKNOWN
BATTERY_HEALTH_UNSPECIFIED_FAILURE
(2)EXTRA_ICON_SMALL:当前用于表示电池状态的icon的资源id
(3)EXTRA_LEVEL: 电池当前的电量
(4) EXTRA_PLUGGED: 当前手机使用的是哪里的电源
可能的取值:
BATTERY_PLUGGED_AC
BATTERY_PLUGGED_USB
(5) EXTRA_PRESENT:表示是否提供电池。有些手机在使用USB电源的情况下,即使拔出了电池,仍然可以正常工作
(6) EXTRA_SCALE:表示电池电量的最大值
(7) EXTRA_STATUS:表示电池的当前状态
可能的取值:
BATTERY_STATUS_CHARGING
BATTERY_STATUS_DISCHARGING
BATTERY_STATUS_FULL
BATTERY_STATUS_NOT_CHARGING
BATTERY_STATUS_UNKNOWN
(8) EXTRA_TECHNOLOGY:表示电池使用的技术。比如,对于锂电池是Li-ion
(9) EXTRA_TEMPERATURE:表示当前电池的温度
(10) EXTRA_VOLTAGE:表示当前电池的电压
package com.example.demo;
import android.os.BatteryManager;
import android.os.Bundle;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
registerReceiver(mReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
unregisterReceiver(mReceiver);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
int health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, -1);
Log.i("test", "health: " + health);
int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
Log.i("test", "voltage: " + voltage);
}
};
}