Andriod 获取电池的信息实例代码

作者:gisoracle 时间:2022-01-01 07:17:00 

具体代码如下所示:


<?xml version="1.0"?>
<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools" xmlns:android="http://schemas.android.com/apk/res/android">
<Button android:layout_height="wrap_content" android:layout_width="match_parent" android:text="获取电池的信息" android:id="@+id/btn_battery"/>
<TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:id="@+id/tv_battery"/>
</LinearLayout>
package com.example.yanlei.wifi;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.BatteryManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
// 定义电池信息的按钮
private Button btnBattery;
// 定义显示电池信息的textview
private TextView tvBattery;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 得到布局中的所有对象
findView();
// 设置对象的 *
setListener();
}
private void findView() {
// 得到布局中的所有对象
btnBattery = (Button) findViewById(R.id.btn_battery);
tvBattery = (TextView) findViewById(R.id.tv_battery);
}
// 设置对象的 *
private void setListener() {
btnBattery.setOnClickListener(listener);
}
OnClickListener listener = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
// 当前的音量
case R.id.btn_battery:
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(mBroadcastReceiver, filter);
break;
}
}
};
// 声明广播接受者对象
private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
// 得到电池状态:
// BatteryManager.BATTERY_STATUS_CHARGING:充电状态。
// BatteryManager.BATTERY_STATUS_DISCHARGING:放电状态。
// BatteryManager.BATTERY_STATUS_NOT_CHARGING:未充满。
// BatteryManager.BATTERY_STATUS_FULL:充满电。
// BatteryManager.BATTERY_STATUS_UNKNOWN:未知状态。
int status = intent.getIntExtra("status", 0);
// 得到健康状态:
// BatteryManager.BATTERY_HEALTH_GOOD:状态良好。
// BatteryManager.BATTERY_HEALTH_DEAD:电池没有电。
// BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:电池电压过高。
// BatteryManager.BATTERY_HEALTH_OVERHEAT:电池过热。
// BatteryManager.BATTERY_HEALTH_UNKNOWN:未知状态。
int health = intent.getIntExtra("health", 0);
// boolean类型
boolean present = intent.getBooleanExtra("present", false);
// 得到电池剩余容量
int level = intent.getIntExtra("level", 0);
// 得到电池最大值。通常为100。
int scale = intent.getIntExtra("scale", 0);
// 得到图标ID
int icon_small = intent.getIntExtra("icon-small", 0);
// 充电方式:BatteryManager.BATTERY_PLUGGED_AC:AC充电。BatteryManager.BATTERY_PLUGGED_USB:USB充电。
int plugged = intent.getIntExtra("plugged", 0);
// 得到电池的电压
int voltage = intent.getIntExtra("voltage", 0);
// 得到电池的温度,0.1度单位。例如 表示197的时候,意思为19.7度
int temperature = intent.getIntExtra("temperature", 0);
// 得到电池的类型
String technology = intent.getStringExtra("technology");
// 得到电池状态
String statusString = "";
// 根据状态id,得到状态字符串
switch (status) {
case BatteryManager.BATTERY_STATUS_UNKNOWN:
statusString = "unknown";
break;
case BatteryManager.BATTERY_STATUS_CHARGING:
statusString = "charging";
break;
case BatteryManager.BATTERY_STATUS_DISCHARGING:
statusString = "discharging";
break;
case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
statusString = "not charging";
break;
case BatteryManager.BATTERY_STATUS_FULL:
statusString = "full";
break;
}
//得到电池的寿命状态
String healthString = "";
//根据状态id,得到电池寿命
switch (health) {
case BatteryManager.BATTERY_HEALTH_UNKNOWN:
healthString = "unknown";
break;
case BatteryManager.BATTERY_HEALTH_GOOD:
healthString = "good";
break;
case BatteryManager.BATTERY_HEALTH_OVERHEAT:
healthString = "overheat";
break;
case BatteryManager.BATTERY_HEALTH_DEAD:
healthString = "dead";
break;
case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
healthString = "voltage";
break;
case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
healthString = "unspecified failure";
break;
}
//得到充电模式
String acString = "";
//根据充电状态id,得到充电模式
switch (plugged) {
case BatteryManager.BATTERY_PLUGGED_AC:
acString = "plugged ac";
break;
case BatteryManager.BATTERY_PLUGGED_USB:
acString = "plugged usb";
break;
}
//显示电池信息
tvBattery.setText("电池的状态:" + statusString
+ "\n健康值: "+ healthString
+ "\n电池剩余容量: " + level
+ "\n电池的最大值:" + scale
+ "\n小图标:" + icon_small
+ "\n充电方式:" + plugged
+ "\n充电方式: " + acString
+ "\n电池的电压:" + voltage
+ "\n电池的温度:" + (float) temperature * 0.1
+ "\n电池的类型:" + technology);
}
}
};
@Override
protected void onPause() {
super.onPause();
// 解除注册监听
unregisterReceiver(mBroadcastReceiver);
}
}

以上所述是小编给大家介绍的Andriod 获取电池的信息实例代码,希望对大家有所帮助!

标签:android,电池,信息
0
投稿

猜你喜欢

  • Mybatis批量修改时出现报错问题解决方案

    2022-05-15 19:07:40
  • java中JVM中如何存取数据和相关信息详解

    2023-08-10 03:49:46
  • 基于Spring p标签和c标签注入方式

    2023-11-25 22:26:36
  • OpenCV计算图像的水平和垂直积分投影

    2021-10-09 08:40:45
  • Eclipse自定义启动画面和图标的方法介绍

    2022-05-14 09:27:13
  • Spring定时任务无故停止又不报错的解决

    2021-06-06 08:41:27
  • Spring MVC整合 freemarker及使用方法

    2022-06-06 16:41:41
  • C++双向循环列表用法实例

    2023-07-23 03:58:54
  • C#实现JSON解析器MojoUnityJson功能(简单且高效)

    2023-12-02 16:44:50
  • Spring深入刨析声明式事务

    2022-07-04 03:57:15
  • Java 方法签名详解及实例代码

    2022-02-04 05:56:06
  • c#动态编译执行对象方法示例 运用映射机制创建对象

    2023-11-19 22:39:32
  • Spring的异常重试框架Spring Retry简单配置操作

    2023-11-25 18:27:35
  • Java中BigDecimal类的add()的使用详解

    2023-03-07 16:12:11
  • Android自定义ViewGroup之WaterfallLayout(二)

    2022-10-11 01:58:02
  • HttpsURLConnection上传文件流(实例讲解)

    2022-03-02 16:54:47
  • 解决dubbo错误ip及ip乱入问题的方法

    2023-08-06 17:18:02
  • SpringBoot+LayIM+t-io 实现好友申请通知流程

    2023-07-13 11:41:52
  • Java如何给Word文档添加多行文字水印

    2023-11-10 07:40:58
  • C#中使用IrisSkin2.dll美化WinForm程序界面的方法

    2023-11-25 20:45:58
  • asp之家 软件编程 m.aspxhome.com