package android.car.usb.handler; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.hardware.usb.UsbDevice; import android.hardware.usb.UsbDeviceConnection; import android.hardware.usb.UsbManager; public class BootUsbScanner extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO: move probing of devices to a service, since AoapInterface.isSupported() could take // up to 2 seconds and many USB devices could be connected. UsbManager manager = (UsbManager) context.getSystemService(Context.USB_SERVICE); for (UsbDevice device : manager.getDeviceList().values()) { if (AoapInterface.isDeviceInAoapMode(device)) { // This could happen if we reboot. We should try to handle this accessory. handle(context, device); } else { UsbDeviceConnection connection = UsbUtil.openConnection(manager, device); try { if (AoapInterface.isSupported(connection)) { handle(context, device); } } finally { connection.close(); } } } } private void handle(Context context, UsbDevice device) { Intent manageDevice = new Intent(context, UsbHostManagementActivity.class); manageDevice.setAction(UsbManager.ACTION_USB_DEVICE_ATTACHED); manageDevice.putExtra(UsbManager.EXTRA_DEVICE, device); manageDevice.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(manageDevice); } }