android 獲取充電狀態 電池電量
阿新 • • 發佈:2019-01-27
public class MainActivity extends Activity { /** * 先宣告一個 IntentFilter 物件 */ private IntentFilter mIntentFilter; private TextView textview; private MyHandler handler = new MyHandler(this); private class MyHandler extends Handler { private WeakReference<Context> mWeakReference; private String tag; public MyHandler(Context context) { mWeakReference = new WeakReference<Context>(context); } @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0) { mIntentFilter = new IntentFilter(); mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED); registerReceiver(mIntentReceiver, mIntentFilter); sendEmptyMessageDelayed(0, 15000); } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); handler.sendEmptyMessageDelayed(0, 15000); } @Override protected void onResume() { super.onResume(); // 註冊訊息處理器 } //宣告訊息處理過程 private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); //要看看是不是我們要處理的訊息 if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { //電池電量,數字 Log.d("Battery", "" + intent.getIntExtra("level", 0)); //電池最大容量 Log.d("Battery", "" + intent.getIntExtra("scale", 0)); //電池伏數 Log.d("Battery", "" + intent.getIntExtra("voltage", 0)); //電池溫度 Log.d("Battery", "" + intent.getIntExtra("temperature", 0)); //電池狀態,返回是一個數字 // BatteryManager.BATTERY_STATUS_CHARGING 表示是充電狀態 // BatteryManager.BATTERY_STATUS_DISCHARGING 放電中 // BatteryManager.BATTERY_STATUS_NOT_CHARGING 未充電 // BatteryManager.BATTERY_STATUS_FULL 電池滿 Log.d("Battery", "" + intent.getIntExtra("status", BatteryManager.BATTERY_STATUS_UNKNOWN)); //充電型別 BatteryManager.BATTERY_PLUGGED_AC 表示是充電器,不是這個值,表示是 USB Log.d("Battery", "" + intent.getIntExtra("plugged", 0)); //電池健康情況,返回也是一個數字 //BatteryManager.BATTERY_HEALTH_GOOD 良好 //BatteryManager.BATTERY_HEALTH_OVERHEAT 過熱 //BatteryManager.BATTERY_HEALTH_DEAD 沒電 //BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE 過電壓 //BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE 未知錯誤 Log.d("Battery", "" + intent.getIntExtra("health", BatteryManager.BATTERY_HEALTH_UNKNOWN)); } } }; @Override protected void onDestroy() { super.onDestroy(); // 登出廣播 unregisterReceiver(mIntentReceiver); } }