检测USB连接并检查它是否是PC

dav*_*ara 1 java usb android android-intent

我想检测我的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");
}
Run Code Online (Sandbox Code Playgroud)

但有没有可能明确知道我是否连接到PC?!因为即使我将手机连接到打印机,或者使用USB端口连接其他解决方案,我已经触发了事件...

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

nio*_*ios 6

您可以使用此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;
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助.

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

  • 嗨,thx的那些信息,但我已经尝试过这个解决方案...但是如果isCharging和usbCharge布尔值设置为true,则不能保证你连接到PC ......即使你连接到打印机两个布尔人都会认为是真的......这就是我的问题... (2认同)