• Android之手机电池电量应用


    原理概述:

        手机电池电量的获取在应用程序的开发中也很常用,Android系统中手机电池电量发生变化的消息是通过Intent广播来实现的,常用的Intent的Action有  Intent.ACTION_BATTERY_CHANGED(电池电量发生改变时)、Intent.ACTION_BATTERY_LOW(电池电量达到下限时)、和Intent.ACTION_BATTERY_OKAY(电池电量从低恢复到高时)。

        当需要在程序中获取电池电量的信息时,需要为应用程序注册BroadcastReceiver组件,当特定的Action事件发生时,系统将会发出相应的广播,应用程序就可以通过BroadcastReceiver来接受广播,并进行相应的处理。

    main.xml布局文件

    复制代码
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ToggleButton android:id="@+id/tb"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textOn="停止获取电量信息"
    android:textOff="获取电量信息" />
    <TextView android:id="@+id/tv"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
    </LinearLayout>
    复制代码

    BatteryActivity类

    复制代码
    package com.ljq.activity;

    import android.app.Activity;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.os.Bundle;
    import android.widget.CompoundButton;
    import android.widget.TextView;
    import android.widget.ToggleButton;
    import android.widget.CompoundButton.OnCheckedChangeListener;


    public class BatteryActivity extends Activity {
    private ToggleButton tb=null;
    private TextView tv=null;
    private BatteryReceiver receiver=null;


    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    receiver=new BatteryReceiver();
    tv=(TextView)findViewById(R.id.tv);
    tb=(ToggleButton)findViewById(R.id.tb);
    tb.setOnCheckedChangeListener(new OnCheckedChangeListener(){
    public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
    //获取电池电量
    if(isChecked){
    IntentFilter filter=new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
    registerReceiver(receiver, filter);//注册BroadcastReceiver
    }else {
    //停止获取电池电量
    unregisterReceiver(receiver);
    tv.setText(null);
    }

    }
    });

    }

    private class BatteryReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
    int current=intent.getExtras().getInt("level");//获得当前电量
    int total=intent.getExtras().getInt("scale");//获得总电量
    int percent=current*100/total;
    tv.setText("现在的电量是"+percent+"%。");
    }
    }


    }
    复制代码

    运行结果

  • 相关阅读:
    使用 awk 命令统计文本
    Mysql基础及系统函数(分享)
    存储过程 :字段按逗号拆分并插入到关联表
    Spring Security SavedRequestAwareAuthenticationSuccessHandler类
    自制Springboot Starter
    vue3 input中回车生成标签
    NOMURA Programming Contest 2022(AtCoder Beginner Contest 253)
    Educational Codeforces Round 129 (Rated for Div. 2)
    Panasonic Programming Contest 2022(AtCoder Beginner Contest 251)
    2022 Google Kick Start Round C
  • 原文地址:https://www.cnblogs.com/meixinghao/p/4571975.html
Copyright © 2020-2023  润新知