如果插入汽车的usb充电器,batteryStatus无法正确显示

时间:2013-09-03 08:33:44

标签: android batterylevel

我有一个应用程序,显示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";
        }

1 个答案:

答案 0 :(得分:1)

从硬件角度来看,AC充电器和车载充电器之间没有任何区别,所以这并不奇怪。这是一个非常冗长的阅读,但USB充电的完整规格可以在这里找到一个1.3MB的zip文件:

Battery Charging v1.2 Spec and Adopters Agreement

据推测,BATTERY_PLUGGED_USB已被保留用于USB主机,而BATTERY_PLUGGED_AC将仅被识别为充电器。无线充电需要手机/平板电脑内的硬件支持,因此具有该功能的硬件能够检测到它何时被使用。