检测USB连接并检查它是否是PC
我想检测我的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 ……即使你连接到打印机,两个布尔值都会设置为真的……这就是我的问题
您可以使用此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;
如果isCharging
和usbCharge
布尔值设置为true,则通过USB连接到PC。
希望这可以帮助。
在http://developer.android.com/training/monitoring-device-state/battery-monitoring.html上找到