Android 获取电池信息

来源:互联网 发布:创维42e380s安装软件 编辑:程序博客网 时间:2024/04/29 03:42

Android中电池信息(Battery information)的取得
       这里介绍电池信息的取得.
       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] view plaincopy
  1. package dev.demo.batterytest;  
  2.   
  3. import Android.app.Activity;  
  4. import Android.content.BroadcastReceiver;  
  5. import Android.content.Context;  
  6. import Android.content.Intent;  
  7. import Android.content.IntentFilter;  
  8. import Android.os.BatteryManager;  
  9. import Android.os.Bundle;  
  10. import Android.util.Log;  
  11.   
  12. public class BatteryTestActivity extends Activity {  
  13. /** Called when the activity is first created. */  
  14. @Override  
  15. public void onCreate(Bundle savedInstanceState) {  
  16. super.onCreate(savedInstanceState);  
  17. setContentView(R.layout.main);   
  18. }  
  19.   
  20. @Override  
  21. protected void onResume() {  
  22. super.onResume();  
  23.   
  24. IntentFilter filter = new IntentFilter();  
  25.   
  26. filter.addAction(Intent.ACTION_BATTERY_CHANGED);  
  27. registerReceiver(mBroadcastReceiver, filter);  
  28. }  
  29.   
  30. @Override  
  31. protected void onPause() {  
  32. super.onPause();  
  33.   
  34. unregisterReceiver(mBroadcastReceiver);  
  35. }  
  36.   
  37. private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {  
  38. @Override  
  39. public void onReceive(Context context, Intent intent) {  
  40. String action = intent.getAction();  
  41. if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {  
  42. int status = intent.getIntExtra("status"0);  
  43. int health = intent.getIntExtra("health"0);  
  44. boolean present = intent.getBooleanExtra("present"false);  
  45. int level = intent.getIntExtra("level"0);  
  46. int scale = intent.getIntExtra("scale"0);  
  47. int icon_small = intent.getIntExtra("icon-small"0);  
  48. int plugged = intent.getIntExtra("plugged"0);  
  49. int voltage = intent.getIntExtra("voltage"0);  
  50. int temperature = intent.getIntExtra("temperature"0);  
  51. String technology = intent.getStringExtra("technology");  
  52.   
  53. String statusString = "";  
  54.   
  55. switch (status) {  
  56. case BatteryManager.BATTERY_STATUS_UNKNOWN:  
  57. statusString = "unknown";  
  58. break;  
  59. case BatteryManager.BATTERY_STATUS_CHARGING:  
  60. statusString = "charging";  
  61. break;  
  62. case BatteryManager.BATTERY_STATUS_DISCHARGING:  
  63. statusString = "discharging";  
  64. break;  
  65. case BatteryManager.BATTERY_STATUS_NOT_CHARGING:  
  66. statusString = "not charging";  
  67. break;  
  68. case BatteryManager.BATTERY_STATUS_FULL:  
  69. statusString = "full";  
  70. break;  
  71. }  
  72.   
  73. String healthString = "";  
  74.   
  75. switch (health) {  
  76. case BatteryManager.BATTERY_HEALTH_UNKNOWN:  
  77. healthString = "unknown";  
  78. break;  
  79. case BatteryManager.BATTERY_HEALTH_GOOD:  
  80. healthString = "good";  
  81. break;  
  82. case BatteryManager.BATTERY_HEALTH_OVERHEAT:  
  83. healthString = "overheat";  
  84. break;  
  85. case BatteryManager.BATTERY_HEALTH_DEAD:  
  86. healthString = "dead";  
  87. break;  
  88. case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:  
  89. healthString = "voltage";  
  90. break;  
  91. case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:  
  92. healthString = "unspecified failure";  
  93. break;  
  94. }  
  95.   
  96. String acString = "";  
  97.   
  98. switch (plugged) {  
  99. 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. };  
原创粉丝点击