2

我想检测我的 android 手机是否通过 USB 连接...为此我正在使用此代码:

public static boolean isConnected(Context context) {
    intent = context.registerReceiver(null, new IntentFilter("android.hardware.usb.action.USB_STATE"));
    return intent.getExtras().getBoolean("connected");
}

但是有没有可能明确知道我是否连接到PC?!因为即使我将手机连接到打印机或其他带有 USB 端口的东西,我的解决方案也会触发事件......

我已经尝试过刚刚发布的@nios 解决方案,但是如果将 isCharging 和 usbCharge 布尔值设置为 true,则不能保证您已连接到 PC...即使您已连接到打印机,两个布尔值也会设置为真的......那是我的问题

4

1 回答 1

7

你可以使用这个 IntentFilter :

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);

// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
                 status == BatteryManager.BATTERY_STATUS_FULL;

// How are we charging?
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;

如果isChargingusbCharge布尔值设置为 true,则您通过 USB 连接到 PC。

希望这可以帮助。

在http://developer.android.com/training/monitoring-device-state/battery-monitoring.html上找到

于 2013-10-07T15:44:00.660 回答