我是靠谱客的博主 跳跃烧鹅,最近开发中收集的这篇文章主要介绍电池电量信息显示,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:layout_marginTop="40dp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/batterytv"
        android:gravity="center"
        android:text="35%"
        android:textColor="#000000"
        android:textSize="16sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


</LinearLayout> 

 然后新建ElectricityBR 工具类, 使该类继承BroadcastReceiver(广播接收器) 用于接收电池信息, BroadcastReceiver 是Android 四大组件之一, 这种控件的本质是一种全局监听器, 用于监听系统全局的广播消息。 它可以接受来自系统和应用的广播, 并使用AlertDialog 显示电池信息:

public class ElBR extends BroadcastReceiver {
    Dialog dialog;

    @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", 0);
            int voltage = intent.getIntExtra("voltage", 0);
            int temperature = intent.getIntExtra("temperature", 0);
            if (dialog == null){
                dialog = new AlertDialog.Builder(context)
                        .setTitle("电池信息")
                        .setMessage(
                                "电池电量为:" + String.valueOf(level * 100 /scale)
                        + "%n" + "电池电压为: " + String.valueOf((float) voltage / 1000) + "v"
                        + "n" + "电池温度为: " + String.valueOf((float) temperature / 10) + "℃" )//设置消息内容
                        .setNegativeButton("关闭", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {   //设置按钮
                            }
                        }).create();
                dialog.show();          //显示电池信息
            }

        }

    }
}

  在主活动界面实现点击显示电池信息:

private TextView textView;
    private  int[] batterystatus = new int[]{R.drawable.battery1, R.drawable.battery2, R.drawable.battery3 };  //不同电量显示图片数组
    private int[] batterypersent = new int[]{75, 30, 0};   //电量多少开始切换图片数组

  相关变量已经声明, 接下来需要对控件进行初始化:

 textView = (TextView) findViewById(R.id.batterytv);
        textView.setOnClickListener(this); 

  创建电池信息广播接受者, 实时显示电池电量信息, 然后在onBatteryPhoto() 方法中根据电量的不同显示不同的TextView背景图片。

/**
     * 创建广播接受电池电量信息
     */
    private  BroadcastReceiver mBatteryBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (Intent.ACTION_BATTERY_CHANGED.equals(action)){
                int intLevel = intent.getIntExtra("level", 0);
                int intScale = intent.getIntExtra("scale", 0);
                onBatteryPhoto(intLevel,  intScale);
                 }
        }
    };

    /**
     * 设置电量百分比, 切换不同电量图片
     */
    private void onBatteryPhoto(int intLevel, int intScale) {
        int bp = intLevel * 100 / intScale;
        textView.setText(bp + "%");
        if (bp >= batterypersent[2]){
            textView.setBackgroundResource(batterystatus[2]);
        }
        if (bp >= batterypersent[1]){
            textView.setBackgroundResource(batterystatus[1]);
        }
        if (bp >= batterypersent[0]){
            textView.setBackgroundResource(batterystatus[0]);
        }
       }

 实现电池图标单击功能:

   在主活动中使用自定义ElBR() 广播接收器, 实时接收电池信息并在Dialog 中显示:

@Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.batterytv:
                ElBR receiver = new ElBR();  //接受电量信息
                IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED); //声明电量信息接受者
                MainActivity.this.registerReceiver(receiver, intentFilter);  //注册广播
                break;
        }
    }

效果图:



最后

以上就是跳跃烧鹅为你收集整理的电池电量信息显示的全部内容,希望文章能够帮你解决电池电量信息显示所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部