版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhanwei0102/article/details/81001284
广播监听获取到电池的信息
private BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { int voltage = arg1.getIntExtra(BatteryManager.EXTRA_VOLTAGE, 0); //电压 batteryVoltage.setText("" + voltage / 1000 + "." + voltage % 1000 + "V"); int temperature = arg1.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0); //温度传感器 batteryTemperature.setText("" + temperature / 10 + "." + temperature % 10 + "℉"); int level = arg1.getIntExtra(BatteryManager.EXTRA_LEVEL, 0); int scale = arg1.getIntExtra(BatteryManager.EXTRA_SCALE, 0); int levelPercent = (int) (((float) level / scale) * 100); //目前容量 batteryCurrentCapacity.setText((BatteryInfo.getBatteryCapacity1(DeviceInfoActivity.this)/100)*levelPercent+" mAh" +"/"+ levelPercent + "%"); //总容量 batteryTotalCapacity.setText(""+ BatteryInfo.getBatteryCapacity(DeviceInfoActivity.this)); int status = arg1.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); String strStatus = "Unknown"; switch (status) { case BatteryManager.BATTERY_STATUS_CHARGING: strStatus = "Charging"; //电池状态 batteryBatteryStatus.setText("USB Charging"); break; case BatteryManager.BATTERY_STATUS_DISCHARGING: strStatus = "Discharging"; //电池状态 batteryBatteryStatus.setText("Uncharged"); break; case BatteryManager.BATTERY_STATUS_NOT_CHARGING: strStatus = "Uncharged"; //电池状态 batteryBatteryStatus.setText("Uncharged"); break; case BatteryManager.BATTERY_STATUS_FULL: strStatus = "Charging completion"; //电池状态 batteryBatteryStatus.setText("USB Charging"); break; } //充电状态 batteryChargingStatus.setText("" + strStatus); int health = arg1.getIntExtra(BatteryManager.EXTRA_HEALTH, BatteryManager.BATTERY_HEALTH_UNKNOWN); String strHealth = "Unknown"; switch (status) { case BatteryManager.BATTERY_HEALTH_GOOD: strHealth = "Good"; break; case BatteryManager.BATTERY_HEALTH_OVERHEAT: strHealth = "Overheated"; break; case BatteryManager.BATTERY_HEALTH_DEAD: strHealth = "Better"; break; case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: strHealth = "Overvoltage"; break; case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: strHealth = "Unknown"; break; case BatteryManager.BATTERY_HEALTH_COLD: strHealth = "Supercooling"; break; } //健康状况 batteryHealthStatus.setText("" + strHealth); String technology = arg1.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); //电池技术 batteryBatteryTechnology.setText("" + technology); } };
调用注册广告
this.registerReceiver(this.mBatteryReceiver, new IntentFilter( Intent.ACTION_BATTERY_CHANGED));
获取到手机电量总毫安的方法
public class BatteryInfo { /** * 获取电池容量 mAh * * 源头文件:frameworks/base/core/res\res/xml/power_profile.xml * * Java 反射文件:frameworks\base\core\java\com\android\internal\os\PowerProfile.java */ public static String getBatteryCapacity(Context context) { Object mPowerProfile; double batteryCapacity = 0; final String POWER_PROFILE_CLASS = "com.android.internal.os.PowerProfile"; try { mPowerProfile = Class.forName(POWER_PROFILE_CLASS) .getConstructor(Context.class) .newInstance(context); batteryCapacity = (double) Class .forName(POWER_PROFILE_CLASS) .getMethod("getBatteryCapacity") .invoke(mPowerProfile); } catch (Exception e) { e.printStackTrace(); } return String.valueOf(batteryCapacity + " mAh"); }}