监听安卓手机电量BroadcastRecevier

本文实例讲述了Android获取手机电池电量用法。分享给大家供大家参考。具体如下:
原理概述:
手机电池电量的获取在应用程序的开发中也很常用,Android系统中手机电池电量发生变化的消息是通过Intent广播来实现的,常用的Intent的Action有 Intent.ACTION_BATTERY_CHANGED(电池电量发生改变时)、Intent.ACTION_BATTERY_LOW(电池电量达到下限时)、和Intent.ACTION_BATTERY_OKAY(电池电量从低恢复到高时)。
以下以ACTION_BATTERY_CHANGED为例的小例子:
现在配置文件中添加权限

 <uses-permission android:name="android.permission.BATTERY_STATS"/>

主类MainActivity


/**
 * 这是一个监听安卓手机电量的demo
 */
public class MainActivity extends AppCompatActivity {
    
    
    private TextView tv_show;
    private  MyReceiver receiver;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv_show= (TextView) findViewById(R.id.txt_show);
    }

    @Override
    protected void onResume() {
        super.onResume();
        receiver=new MyReceiver();
        IntentFilter filter=new IntentFilter();
        //安卓提供的Action
        filter.addAction(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(receiver,filter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        unregisterReceiver(receiver);
    }

    class MyReceiver extends BroadcastReceiver{

        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals(Intent.ACTION_BATTERY_CHANGED)){
                //获取当前电量
                int level=intent.getIntExtra("level",0);
                //获取系统总电量
                int sum=intent.getIntExtra("scale",100);
                tv_show.setText("当前手机电量:"+(level*100)/sum+"%");
                if (level>90){
                    Toast.makeText(context,"当前电量充足",Toast.LENGTH_SHORT).show();
                }
            }
        }
    }
}

本demo是在Android Studio下运行且通过

猜你喜欢

转载自blog.csdn.net/Json_Jerry/article/details/52626388