概述
布局:
<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;
}
}
效果图:
最后
以上就是跳跃烧鹅为你收集整理的电池电量信息显示的全部内容,希望文章能够帮你解决电池电量信息显示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复