移动开发---电池信息

版权声明:本文为博主原创文章,未经博主允许不得转载。 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");
    }}

猜你喜欢

转载自blog.csdn.net/zhanwei0102/article/details/81001284