Android監(jiān)聽(tīng)電池狀態(tài)實(shí)例代碼
如果要監(jiān)聽(tīng)電池的狀態(tài)改變,需要?jiǎng)討B(tài)注冊(cè):android.intent.action.BATTERY_CHANGED,收到Action后可以根據(jù)對(duì)應(yīng)的Key獲取你需要的信息,更詳細(xì)信息可以參考以下例子中的BatteryChangedReceiver類(lèi)
具體代碼如下所示:
package com.example.charginganimation; import android.app.Activity; 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.view.View; public class MainActivity extends Activity { private CustomClipLoading ccl; private BatteryChangedReceiver receiver = new BatteryChangedReceiver(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); registerReceiver(receiver, getFilter()); } private IntentFilter getFilter() { IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(Intent.ACTION_BATTERY_LOW); filter.addAction(Intent.ACTION_BATTERY_OKAY); return filter; } @Override protected void onDestroy() { // TODO Auto-generated method stub unregisterReceiver(receiver); super.onDestroy(); } class BatteryChangedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub final String action = intent.getAction(); if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_CHANGED)) { System.out .println("BatteryChangedReceiver BATTERY_CHANGED_ACTION---"); // 當(dāng)前電池的電壓 int voltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1); // 電池的健康狀態(tài) int health = intent .getIntExtra(BatteryManager.EXTRA_HEALTH, -1); switch (health) { case BatteryManager.BATTERY_HEALTH_COLD: System.out.println("BATTERY_HEALTH_COLD"); break; case BatteryManager.BATTERY_HEALTH_DEAD: System.out.println("BATTERY_HEALTH_DEAD "); break; case BatteryManager.BATTERY_HEALTH_GOOD: System.out.println("BATTERY_HEALTH_GOOD"); break; case BatteryManager.BATTERY_HEALTH_OVERHEAT: System.out.println("BATTERY_HEALTH_OVERHEAT"); break; case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE: System.out.println("BATTERY_HEALTH_COLD"); break; case BatteryManager.BATTERY_HEALTH_UNKNOWN: System.out.println("BATTERY_HEALTH_UNKNOWN"); break; case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE: System.out.println("BATTERY_HEALTH_UNSPECIFIED_FAILURE"); break; default: break; } // 電池當(dāng)前的電量, 它介于0和 EXTRA_SCALE之間 int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1); // 電池電量的最大值 int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1); // 當(dāng)前手機(jī)使用的是哪里的電源 int pluged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1); switch (pluged) { case BatteryManager.BATTERY_PLUGGED_AC: // 電源是AC charger.[應(yīng)該是指充電器] System.out.println("BATTERY_PLUGGED_AC"); break; case BatteryManager.BATTERY_PLUGGED_USB: // 電源是USB port System.out.println("BATTERY_PLUGGED_USB "); break; default: break; } int status = intent .getIntExtra(BatteryManager.EXTRA_STATUS, -1); switch (status) { case BatteryManager.BATTERY_STATUS_CHARGING: // 正在充電 System.out.println("BATTERY_STATUS_CHARGING "); break; case BatteryManager.BATTERY_STATUS_DISCHARGING: System.out.println("BATTERY_STATUS_DISCHARGING "); break; case BatteryManager.BATTERY_STATUS_FULL: // 充滿 System.out.println("BATTERY_STATUS_FULL "); break; case BatteryManager.BATTERY_STATUS_NOT_CHARGING: // 沒(méi)有充電 System.out.println("BATTERY_STATUS_NOT_CHARGING "); break; case BatteryManager.BATTERY_STATUS_UNKNOWN: // 未知狀態(tài) System.out.println("BATTERY_STATUS_UNKNOWN "); break; default: break; } // 電池使用的技術(shù)。比如,對(duì)于鋰電池是Li-ion String technology = intent .getStringExtra(BatteryManager.EXTRA_TECHNOLOGY); // 當(dāng)前電池的溫度 int temperature = intent.getIntExtra( BatteryManager.EXTRA_TEMPERATURE, -1); System.out.println("voltage = " + voltage + " technology = " + technology + " temperature = " + temperature + " level = " + level + " scale = " + scale); } else if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_LOW)) { // 表示當(dāng)前電池電量低 System.out .println("BatteryChangedReceiver ACTION_BATTERY_LOW---"); } else if (action.equalsIgnoreCase(Intent.ACTION_BATTERY_OKAY)) { // 表示當(dāng)前電池已經(jīng)從電量低恢復(fù)為正常 System.out .println("BatteryChangedReceiver ACTION_BATTERY_OKAY---"); } } } }
獲取apk和版本信息
private int getVerCode(Context context) { int verCode = -1; try { verCode = context.getPackageManager().getPackageInfo( "com.example.charginganimation", 0).versionCode; } catch (NameNotFoundException e) { e.printStackTrace(); } return verCode; } private String getVerName(Context context) { String verName = ""; try { verName = context.getPackageManager().getPackageInfo( "com.example.charginganimation", 0).versionName; } catch (NameNotFoundException e) { e.printStackTrace(); } return verName; }
以上代碼內(nèi)容是小編給大家介紹的android監(jiān)聽(tīng)電池狀態(tài)的實(shí)例代碼,本文寫(xiě)的不好還請(qǐng)見(jiàn)諒,有好的意見(jiàn)歡迎給小編留言,我會(huì)及時(shí)給大家溝通的,謝謝大家一直以來(lái)對(duì)腳本之家網(wǎng)站的支持!
- Android實(shí)現(xiàn)電池管理系統(tǒng)
- Android電池電量監(jiān)聽(tīng)的示例代碼
- Android4.4開(kāi)發(fā)之電池低電量告警提示原理與實(shí)現(xiàn)方法分析
- Android電池電量跳變
- Android編程實(shí)現(xiàn)對(duì)電池狀態(tài)的監(jiān)視功能示例
- Android查看電池電量的方法(基于BroadcastReceiver)
- Android編程之電池電量信息更新的方法(基于BatteryService實(shí)現(xiàn))
- Android獲取手機(jī)電池電量用法實(shí)例
- Android實(shí)現(xiàn)偵聽(tīng)電池狀態(tài)顯示、電量及充電動(dòng)態(tài)顯示的方法
- 深入解析android5.1 healthd
相關(guān)文章
設(shè)置Android設(shè)備WIFI在休眠時(shí)永不斷開(kāi)的代碼實(shí)現(xiàn)
這篇文章主要介紹了設(shè)置Android設(shè)備WIFI在休眠時(shí)永不斷開(kāi)的代碼實(shí)現(xiàn),需要的朋友可以參考下2014-07-07Android用過(guò)TextView實(shí)現(xiàn)跑馬燈效果的示例
本篇文章主要介紹了Android用過(guò)TextView實(shí)現(xiàn)跑馬燈效果的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08詳解Android輕量型數(shù)據(jù)庫(kù)SQLite
這篇文章主要為大家詳細(xì)介紹了Android輕量型數(shù)據(jù)庫(kù)SQLite,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10Android和iOS 測(cè)試五個(gè)最好的開(kāi)源自動(dòng)化工具
本文主要介紹Android和iOS 五個(gè)最好的開(kāi)源自動(dòng)化工具,這里整理了相關(guān)資料,希望能幫助測(cè)試軟件的朋友,有需要的看下2016-09-09Android開(kāi)發(fā)新手必須知道的10大嚴(yán)重錯(cuò)誤
這篇文章主要介紹了Android開(kāi)發(fā)新手必須知道的10大嚴(yán)重錯(cuò)誤,總結(jié)分析了Android開(kāi)發(fā)中幫助文件、開(kāi)發(fā)工具、社區(qū)等的重要性以及重要的開(kāi)發(fā)原則,需要的朋友可以參考下2016-01-01Android中AutoCompleteTextView自動(dòng)提示
這篇文章主要為大家詳細(xì)介紹了Android中AutoCompleteTextView自動(dòng)提示的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12