首页 > 代码库 > Android电池状态监听
Android电池状态监听
如果要监听电池的状态改变,需要动态注册: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---"); } } } }
Android电池状态监听
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。