BatteryStateViewUtil.java 2.1 KB
package com.sw.laryngoscope.utils;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.BatteryManager;
import android.util.Log;

import com.sw.laryngoscope.widget.BatteryStateView;

public class BatteryStateViewUtil {
    /**
     * 创建电量监听
     * @param view
     * @return
     */
    public static BroadcastReceiver createBroadcastReceiver(final BatteryStateView view) {
        return new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                if (Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())) {
                    int level = intent.getIntExtra("level", 0);
                    int scale = intent.getIntExtra("scale", 100);
                    int power = level * 100 / scale;
                    view.setPower(power);

                    boolean isCharging = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1) != 0;
                    if ( getChargeListener() != null ) {
                        getChargeListener().onBatteryPower(power, isCharging);
                    }
                    int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
                    //Log.d(BatteryStateViewUtil.class.getSimpleName(), " plugged " + plugged);//BATTERY_PLUGGED_AC
                    if ( plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS ) {
                        view.setWirelessCharge(true);
                    } else {
                        view.setWirelessCharge(false);
                        view.setCharge(isCharging);
                    }
                }
            }
        };
    }

    private static OnBatteryChargeLitener chargelistener;

    private static OnBatteryChargeLitener getChargeListener() {
        return chargelistener;
    }

    public static void setOnBatteryLitener(OnBatteryChargeLitener listener) {
        chargelistener = listener;
    }

    public interface OnBatteryChargeLitener {
        void onBatteryPower(int power, boolean isCharging);
    }
}