博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中电池信息(Battery information)的取得
阅读量:4056 次
发布时间:2019-05-25

本文共 4265 字,大约阅读时间需要 14 分钟。

这里介绍电池信息的取得.

    android.content.BroadcastReceiver类
    android.os.BatteryManager类

 

 

 

 

 

 

● 电池信息的取得,调用registerReceiver()方法。

         第1个参数,设置BroadcastReceiver实例
         第2个参数,设置追加了Intent.ACTION_BATTERY_CHANGED处理的IntentFilter实例。

● 在BroadcastReceiver的onReceive()事件,接收到的Intent.ACTION_BATTERY_CHANGED,包括下面的信息。

    “status”(int类型)…状态,定义值是BatteryManager.BATTERY_STATUS_XXX。
    “health”(int类型)…健康,定义值是BatteryManager.BATTERY_HEALTH_XXX。
    “present”(boolean类型)
    “level”(int类型)…电池剩余容量
    “scale”(int类型)…电池最大值。通常为100。
    “icon-small”(int类型)…图标ID。
    “plugged”(int类型)…连接的电源插座,定义值是BatteryManager.BATTERY_PLUGGED_XXX。
    “voltage”(int类型)…mV。
    “temperature”(int类型)…温度,0.1度单位。例如 表示197的时候,意思为19.7度。  
    “technology”(String类型)…电池类型,例如,Li-ion等等。

 

例程源码(Java)

001 package com.adakoda.batterytest;
002   
003 import android.app.Activity;
004 import android.content.BroadcastReceiver;
005 import android.content.Context;
006 import android.content.Intent;
007 import android.content.IntentFilter;
008 import android.os.BatteryManager;
009 import android.os.Bundle;
010 import android.util.Log;
011   
012 public class BatteryTestActivity extends Activity {
013     /** Called when the activity is first created. */
014     @Override
015     public void onCreate(Bundle savedInstanceState) {
016         super.onCreate(savedInstanceState);
017         setContentView(R.layout.main);        
018     }
019   
020     @Override
021     protected void onResume() {
022         super.onResume();
023          
024         IntentFilter filter = new IntentFilter();
025          
026         filter.addAction(Intent.ACTION_BATTERY_CHANGED);
027         registerReceiver(mBroadcastReceiver, filter);
028     }
029   
030     @Override
031     protected void onPause() {
032         super.onPause();
033          
034         unregisterReceiver(mBroadcastReceiver);
035     }
036   
037     private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
038         @Override
039         public void onReceive(Context context, Intent intent) {
040             String action = intent.getAction();
041             if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
042                 int status = intent.getIntExtra("status", 0);
043                 int health = intent.getIntExtra("health", 0);
044                 boolean present = intent.getBooleanExtra("present", false);
045                 int level = intent.getIntExtra("level", 0);
046                 int scale = intent.getIntExtra("scale", 0);
047                 int icon_small = intent.getIntExtra("icon-small", 0);
048                 int plugged = intent.getIntExtra("plugged", 0);
049                 int voltage = intent.getIntExtra("voltage", 0);
050                 int temperature = intent.getIntExtra("temperature", 0);
051                 String technology = intent.getStringExtra("technology");
052                  
053                 String statusString = "";
054                  
055                 switch (status) {
056                 case BatteryManager.BATTERY_STATUS_UNKNOWN:
057                     statusString = "unknown";
058                     break;
059                 case BatteryManager.BATTERY_STATUS_CHARGING:
060                     statusString = "charging";
061                     break;
062                 case BatteryManager.BATTERY_STATUS_DISCHARGING:
063                     statusString = "discharging";
064                     break;
065                 case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
066                     statusString = "not charging";
067                     break;
068                 case BatteryManager.BATTERY_STATUS_FULL:
069                     statusString = "full";
070                     break;
071                 }
072                  
073                 String healthString = "";
074                  
075                 switch (health) {
076                 case BatteryManager.BATTERY_HEALTH_UNKNOWN:
077                     healthString = "unknown";
078                     break;
079                 case BatteryManager.BATTERY_HEALTH_GOOD:
080                     healthString = "good";
081                     break;
082                 case BatteryManager.BATTERY_HEALTH_OVERHEAT:
083                     healthString = "overheat";
084                     break;
085                 case BatteryManager.BATTERY_HEALTH_DEAD:
086                     healthString = "dead";
087                     break;
088                 case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
089                     healthString = "voltage";
090                     break;
091                 case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
092                     healthString = "unspecified failure";
093                     break;
094                 }
095                  
096                 String acString = "";
097                  
098                 switch (plugged) {
099                 case BatteryManager.BATTERY_PLUGGED_AC:
100                     acString = "plugged ac";
101                     break;
102                 case BatteryManager.BATTERY_PLUGGED_USB:
103                     acString = "plugged usb";
104                     break;
105                 }
106                                  
107                 Log.v("status", statusString);
108                 Log.v("health", healthString);
109                 Log.v("present", String.valueOf(present));
110                 Log.v("level", String.valueOf(level));
111                 Log.v("scale", String.valueOf(scale));
112                 Log.v("icon_small", String.valueOf(icon_small));
113                 Log.v("plugged", acString);
114                 Log.v("voltage", String.valueOf(voltage));
115                 Log.v("temperature", String.valueOf(temperature));
116                 Log.v("technology", technology);
117             }
118         }
119     };
120 }

参考资源

转载地址:http://buhci.baihongyu.com/

你可能感兴趣的文章
机器学习实战之决策树二
查看>>
[LeetCode By Python]7 Reverse Integer
查看>>
[LeetCode By Python]121. Best Time to Buy and Sell Stock
查看>>
Android/Linux 内存监视
查看>>
Android2.1消息应用(Messaging)源码学习笔记
查看>>
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
nginx+tomcat+memcached (msm)实现 session同步复制
查看>>
WAV文件解析
查看>>
WPF中PATH使用AI导出SVG的方法
查看>>
QT打开项目提示no valid settings file could be found
查看>>
Win10+VS+ESP32环境搭建
查看>>
android 代码实现圆角
查看>>
flutter-解析json
查看>>