4.1.3.2 电池充电的监听 Broadcast-Receiver

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


电池充电的广播接收,只能通过动态注册,不能通过静态注册:
public class MainActivity extends AppCompatActivity {
    private BatteryReceiver batteryReceiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        batteryReceiver = new BatteryReceiver();
    }


    @Override
    protected void onResume() {
        super.onResume();
//1.创建IntentFilter,对应<intent-filter><action/>
        //直接指定
        IntentFilter  intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
//2.动态注册Context对象registerReceiver
        //!!!哪个Context注册,那么,这个Receiver作用范围
        registerReceiver(batteryReceiver, intentFilter);
    }


    @Override
    protected void onPause() {
        super.onPause();
//onPause 里面一定要取消注册:不然在退出的时候会报错:
        unregisterReceiver(batteryReceiver);
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        batteryReceiver=null;
    }
}


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++




package com.kodulf.broadcastrecevierdemo.receivers;


/**
 * Created by Administrator on 15-12-15.
 */


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


/**
 * 动态注册的案例,
 * 使用电池电量检测;
 * !!!注意,电池电量只能够使用动态注册,如果使用静态的就会把系统弄的太慢了。
 */
public class BatteryRecevier extends BroadcastReceiver {
    private String TAG="BatteryRecevier";
    @Override
    public void onReceive(Context context, Intent intent) {
        //1,定义action 内容,也就是电池变化的ACTION
        String action = intent.getAction();
        //电池电量变化,是Android 基本的状态,所以定义在Intent 中
        //包含一个ACTION
        if(action.equals(Intent.ACTION_BATTERY_CHANGED)){
        //2.获取电量相关信息
            //标准的广播信息,都存储在Intent 参数中,
            //通过BatteryManager来获取;内部包含了常量定义


            int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);
            int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE,0);
            int health = intent.getIntExtra(BatteryManager.EXTRA_HEALTH,0);
            int state = intent.getIntExtra(BatteryManager.EXTRA_STATUS,0);
            int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED,0);


            Log.d("TAG","level "+level);
            Log.d("TAG","scale "+scale);
            Log.d("TAG","health "+health);
            Log.d("TAG","state "+state);
            Log.d("TAG","plugged "+plugged);


            //检测是否街上电源了
            switch(plugged){
                case BatteryManager.BATTERY_PLUGGED_AC:
                    //接上电源插座,交流电
                    break;
                case BatteryManager.BATTERY_PLUGGED_USB:
                    //接上电脑USB充电
                    break;
                case BatteryManager.BATTERY_PLUGGED_WIRELESS:
                    //无线充电
                    break;
            }


            //----------------------------------
            //检测status
            switch(state){
                case BatteryManager.BATTERY_STATUS_CHARGING:
                    //充电中
                    break;
                case BatteryManager.BATTERY_STATUS_DISCHARGING:
                    //耗电
                    break;
                case BatteryManager.BATTERY_STATUS_FULL:
                    //充满电
                    break;
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值