package com.oo.seex.sys_state.state;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

import com.oo.seex.sys_state.Config;
import com.oo.seex.sys_state.Register;
import com.oo.seex.sys_state.state.bean.BatteryState;

/**
 * Created by gyp on 17/7/4.
 */

public class BatteryStateReceiver extends BaseReceiver{
    public BatteryStateReceiver(Context context, Register register) {
        super(context,register);
        addAction(Intent.ACTION_BATTERY_CHANGED);
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
            BatteryState state = new BatteryState();
            // 得到电池状态：
            // BatteryManager.BATTERY_STATUS_CHARGING：充电状态。
            // BatteryManager.BATTERY_STATUS_DISCHARGING：放电状态。
            // BatteryManager.BATTERY_STATUS_NOT_CHARGING：未充满。
            // BatteryManager.BATTERY_STATUS_FULL：充满电。
            // BatteryManager.BATTERY_STATUS_UNKNOWN：未知状态。
            int status = intent.getIntExtra("status", 0);
            state.setStatus(status);
            // 得到健康状态：
            // BatteryManager.BATTERY_HEALTH_GOOD：状态良好。
            // BatteryManager.BATTERY_HEALTH_DEAD：电池没有电。
            // BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE：电池电压过高。
            // BatteryManager.BATTERY_HEALTH_OVERHEAT：电池过热。
            // BatteryManager.BATTERY_HEALTH_UNKNOWN：未知状态。
            int health = intent.getIntExtra("health", 0);
            state.setHealth(health);
            // 得到电池剩余容量
            int level = intent.getIntExtra("level", 0);
            state.setLevel(level);
            // 得到电池最大值。通常为100。
            int scale = intent.getIntExtra("scale", 0);
            state.setScale(scale);
            // 充电方式：　BatteryManager.BATTERY_PLUGGED_AC：AC充电。　BatteryManager.BATTERY_PLUGGED_USB：USB充电。
            int plugged = intent.getIntExtra("plugged", 0);
            state.setPlugged(plugged);
            register.callback(Config.FLAG_BATTERY_STATE,state);
        }
    }
}
