Android 监听 USB 插拔 - chuwuwang/ReadingNote GitHub Wiki

测试版本:5.0

对于 usb 的插拔,USBManager 中会有相应的广播发出来

UsbManager.ACTION_USB_ACCESSORY_ATTACHED
UsbManager.ACTION_USB_ACCESSORY_DETACHED
UsbManager.ACTION_USB_DEVICE_ATTACHED
UsbManager.ACTION_USB_DEVICE_DETACHED

还有一个特殊的广播

public static final String ACTION_USB_STATE = "android.hardware.usb.action.USB_STATE";
boolean isConnected = intent.getExtras().getBoolean("connected")
if (isConnected) {
  // usb 插入  
} else {
  // usb 拔出  
}

还有一个更特殊的广播,监听电池电量变化

// 当使用这个 action 时即插就生效,并会持续监听
Intent.ACTION_BATTERY_CHANGE

// 还有一种是是否是 USB 充电,只能是判断一下
int chargePlug = arg1.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;

相应的权限

<uses-permission android:name="android.hardware.usb.host" />
<uses-permission android:name="android.hardware.usb.accessory" />