當USB或AC電源連接到Android手機時,是否有簡單的通知方法?如何檢測電源連接狀態?
回答
爲ACTION_BATTERY_CHANGED
設置BroadcastReceiver
。額外的Intent
會告訴你充電狀態是什麼 - 詳情請參閱BatteryManager
。
在AndroidManifest.xml
<application android:icon="@drawable/icon" android:label="@string/app_name">
<receiver android:name=".receiver.PlugInControlReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
</application>
代碼
public class PlugInControlReceiver extends BroadcastReceiver {
public void onReceive(Context context , Intent intent) {
String action = intent.getAction();
if(action.equals(Intent.ACTION_POWER_CONNECTED)) {
// Do something when power connected
}
else if(action.equals(Intent.ACTION_POWER_DISCONNECTED)) {
// Do something when power disconnected
}
}
}
請注意,onReceive()方法應位於擴展BroadcastReceiver的PlugInControlReceiver類中。 – 2014-04-03 08:58:32
感謝您的解釋@OdedBreiner – 2014-04-07 06:35:15
但以上解決方案不適用於VIVO和OPPO手機 – 2017-05-29 05:51:27
還有一件事你必須檢查是否有明顯錯誤--->應用程序。 如果然後點擊顯示錯誤的字段,只需點擊鏈接「名稱」 然後出現對話框添加一個類。添加類並在類中複製接收的代碼。即上面的代碼應該複製到類文件中而不是主要活動中。 謝謝 Pzycoderz
另一種方式是使用電池管理器。爲此,我可用於API> = 21
public class PowerUtil {
public static boolean isConnected(Context context) {
Intent intent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB;
}
}
下面是另一種方式來輪詢信息:
讀出的值在這裏:離。
經由機器人殼:
cat /sys/class/power_supply/usb/online
1 =連接,0 =沒有。反映USB連接狀態。
貓/ SYS /類/ POWER_SUPPLY/AC /在線
1 =連接,0 =沒有。反映AC連接狀態。
同時使用這兩個,我想會告訴設備是否接收電源。不知道所有設備的位置是否相同。在三星平板電腦和RockChip設備上找到了位置相同的Android 7+和5+。
- 1. 檢測USB電源狀態
- 2. 如何檢測連接狀態
- 3. 檢測Windows 10系統電源狀態
- 4. 檢測電源狀態變化
- 5. 在WinPE中檢測AC電源連接?
- 6. 檢測Ajax請求無連接狀態和狀態
- 7. 動態檢測顯示器的電源狀態
- 8. 如何檢測充電記錄的電池電量和狀態?
- 9. 在低級別,Websocket協議如何檢測連接的狀態?
- 10. 如何測試遠程連接(檢查狀態)
- 11. Android:如何檢測藍牙連接狀態
- 12. 在C#中檢測網絡狀態(連接 - 斷開連接)
- 13. cherrypy檢查連接狀態
- 14. 檢索連接狀態
- 15. 如何通過3G連接檢查互聯網連接狀態?
- 16. 如何使用jdbc連接檢查java中的連接狀態?
- 17. iOS - 如何檢測電源是否連接到iDevice廣告正在充電
- 18. BatteryManager BroadcastReciever未檢測到充電狀態
- 19. 如何檢測Internet連接
- 20. 檢查電源是否連接android
- 21. 如何在android中檢測當前充電狀態
- 22. 如何檢查電子在線狀態。
- 23. 如何檢索雙電池狀態?
- 24. 如何檢測電源故障?
- 25. Symbian電源狀態通知
- 26. EventMachine/em-http-request檢測HTTP流連接停止時的狀態
- 27. 檢測到Internet連接處於脫機狀態?
- 28. SignalR:檢測客戶端的連接狀態
- 29. 通過星號檢測到Asterisk的連接狀態Java
- 30. Facebook連接登錄狀態服務器端檢測
謝謝!無法輪詢此信息? – NPike 2010-07-21 02:41:31
@NPike:看到這個[接受的答案](http://stackoverflow.com/questions/3997289/get-temperature-of-battery-on-android/3997349#3997349)的意見另一個問題 - 一個可以得到當前狀態使用在那裏顯示的方法而不訂閱。 – 2011-03-09 14:03:21
Tu be precise:Intent ix = main.registerReceiver(null,new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); \t \t \t \t boolean plugged = ix!= null && ix.getIntExtra(「plugged」,0)!= 0; – mdiener 2013-09-16 14:23:29