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

Java 检测USB连接并检查它是否是PC,java,android,android-intent,usb,Java,Android,Android Intent,Usb,我想检测我的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");

我想检测我的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");
}
但是有没有可能知道我是否连接到电脑?!因为我的解决方案触发了事件,即使我用USB端口将手机连接到打印机或其他设备


我已经尝试了刚才发布的@nios解决方案,但是如果isCharging和usbCharge booleans设置为true,则不能保证您已连接到PC…即使您连接到打印机,两个booleans都将打赌设置为true…这是我的问题

您可以使用此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
booleans设置为true,则表示您已通过USB连接到电脑

希望这有帮助


Hi,thx上找到这些信息,但我已经尝试过这个解决方案…但是如果isCharging和usbCharge booleans设置为true,不能保证你的电脑连接到电脑上……即使你连接到打印机,两个布尔值都会设置为true……这是我的问题……如果检查放电是否为true,最好将最后三个查询封装在,如果它显然是假的,它们是不必要的。有没有办法区分充电和文件传输(通过USB连接到电脑)?