如果要监听电池的状态改变,需要动态注册:android.intent.action.BATTERY_CHANGED,收到Action后可以根据对应的Key获取你需要的信息,更详细信息可以参考以下例子中的BatteryChangedReceiver类
package com.example.charginganimation; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.BatteryManager; import android.os.Bundle; import android.view.View; public class MainActivity extends Activity { private CustomClipLoading ccl; private BatteryChangedReceiver receiver = new BatteryChangedReceiver(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); registerReceiver(receiver, getFilter()); } private IntentFilter getFilter() { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(Intent.ACTION_BATTERY_LOW); filter.addAction(Intent.ACTION_BATTERY_OKAY); return filter; } @Override protected void onDestroy() { // TODO Auto-generated method stub unregisterReceiver(receiver); super.onDestroy(); } class BatteryChangedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub final String action = intent.getAction(); if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_CHANGED)) { System.out .println("BatteryChangedReceiver BATTERY_CHANGED_ACTION---"); // 当前电池的电压 int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1); // 电池的健康状态 int health = intent .getIntExtra(BatteryManager.EXTRA_HEALTH, -1); switch (health) { case BatteryManager.BATTERY_HEALTH_COLD: System.out.println("BATTERY_HEALTH_COLD"); break; case BatteryManager.BATTERY_HEALTH_DEAD: System.out.println("BATTERY_HEALTH_DEAD "); break; case BatteryManager.BATTERY_HEALTH_GOOD: System.out.println("BATTERY_HEALTH_GOOD"); break; case BatteryManager.BATTERY_HEALTH_OVERHEAT: System.out.println("BATTERY_HEALTH_OVERHEAT"); break; case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: System.out.println("BATTERY_HEALTH_COLD"); break; case BatteryManager.BATTERY_HEALTH_UNKNOWN: System.out.println("BATTERY_HEALTH_UNKNOWN"); break; case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: System.out.println("BATTERY_HEALTH_UNSPECIFIED_FAILURE"); break; default: break; } // 电池当前的电量, 它介于0和 EXTRA_SCALE之间 int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); // 电池电量的最大值 int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); // 当前手机使用的是哪里的电源 int pluged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); switch (pluged) { case BatteryManager.BATTERY_PLUGGED_AC: // 电源是AC charger.[应该是指充电器] System.out.println("BATTERY_PLUGGED_AC"); break; case BatteryManager.BATTERY_PLUGGED_USB: // 电源是USB port System.out.println("BATTERY_PLUGGED_USB "); break; default: break; } int status = intent .getIntExtra(BatteryManager.EXTRA_STATUS, -1); switch (status) { case BatteryManager.BATTERY_STATUS_CHARGING: // 正在充电 System.out.println("BATTERY_STATUS_CHARGING "); break; case BatteryManager.BATTERY_STATUS_DISCHARGING: System.out.println("BATTERY_STATUS_DISCHARGING "); break; case BatteryManager.BATTERY_STATUS_FULL: // 充满 System.out.println("BATTERY_STATUS_FULL "); break; case BatteryManager.BATTERY_STATUS_NOT_CHARGING: // 没有充电 System.out.println("BATTERY_STATUS_NOT_CHARGING "); break; case BatteryManager.BATTERY_STATUS_UNKNOWN: // 未知状态 System.out.println("BATTERY_STATUS_UNKNOWN "); break; default: break; } // 电池使用的技术。比如,对于锂电池是Li-ion String technology = intent .getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); // 当前电池的温度 int temperature = intent.getIntExtra( BatteryManager.EXTRA_TEMPERATURE, -1); System.out.println("voltage = " + voltage + " technology = " + technology + " temperature = " + temperature + " level = " + level + " scale = " + scale); } else if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_LOW)) { // 表示当前电池电量低 System.out .println("BatteryChangedReceiver ACTION_BATTERY_LOW---"); } else if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_OKAY)) { // 表示当前电池已经从电量低恢复为正常 System.out .println("BatteryChangedReceiver ACTION_BATTERY_OKAY---"); } } } }
时间: 2024-10-10 08:43:46