本文實例講述了Android4.4電池低電量告警提示原理與實現方法。分享給大家供大家參考,具體如下:
之前版本的電池電量低是通過發送 intent ACTION_BATTERY_LOW來實現的,而在android4.4中,通過發送intent ACTION_BATTERY_CHANGED,也就是電池電量只要變化就檢查是否需要低電量告警,并且實現挪到了PowerUI中。
路徑:
frameworks/base/packages/SystemUI/src/com/android/systemui/power/PowerUI.java
public void start() {...... //注冊intent, 主要關注的是ACTION_BATTERY_CHANGED消息。 // Register for Intent broadcasts for... IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_BATTERY_CHANGED); filter.addAction(Intent.ACTION_SCREEN_OFF); filter.addAction(Intent.ACTION_SCREEN_ON); mContext.registerReceiver(mIntentReceiver, filter, null, mHandler);}當電池電量發生變化的時候,BatteryService就會發送 ACTION_BATTERY_CHANGED的 intent.
接著如下函數就會被調用:
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_BATTERY_CHANGED)) { ...... mBatteryStatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS, BatteryManager.BATTERY_STATUS_UNKNOWN); ...... if (!plugged && (bucket < oldBucket || oldPlugged) && mBatteryStatus != BatteryManager.BATTERY_STATUS_UNKNOWN && bucket < 0) { showLowBatteryWarning(); ...... } }}; 如果不想要顯示低電量對話框, 只要不調用showLowBatteryWarning()即可。
我遇到的問題在于插上充電座之后開機仍然顯示低電量告警,提示要插入充電器,出現這個問題的原因在于: 電池是另外一塊板子供的,所以沒有插拔信息,并且battery status默認情況下也是BATTERY_STATUS_UNKNOWN。
因此只要將status改成BATTERY_STATUS_CHARGING就能修復此問題了~
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答