我有一个应用程序,显示Android设备是通过插头,USB线,无线设备充电还是根本不充电。我使用下面的代码,它将显示正确的充电方法(如果有的话),直到我将我的手机(有Android 4.1)或平板电脑(有Android 4.3)充电到汽车的USB充电器。当它应该说一个USB设备时,它会说它是通过插头充电的。这背后的原因是什么?
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = registerReceiver(null, filter);
int chargeState = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
if(chargeState == BatteryManager.BATTERY_PLUGGED_USB)
{
chargingBy = "charging via usb cable";
}
else if (chargeState == BatteryManager.BATTERY_PLUGGED_AC)
{
chargingBy = "charging via plug";
}
else if (chargeState == BatteryManager.BATTERY_PLUGGED_WIRELESS)
{
chargingBy = "charging via wireless device";
}
else
{
chargingBy = "not charging";
}
答案 0 :(得分:1)
从硬件角度来看,AC充电器和车载充电器之间没有任何区别,所以这并不奇怪。这是一个非常冗长的阅读,但USB充电的完整规格可以在这里找到一个1.3MB的zip文件:
Battery Charging v1.2 Spec and Adopters Agreement
据推测,BATTERY_PLUGGED_USB
已被保留用于USB主机,而BATTERY_PLUGGED_AC
将仅被识别为充电器。无线充电需要手机/平板电脑内的硬件支持,因此具有该功能的硬件能够检测到它何时被使用。