blob: 5255f165b92b91db8186459c1e6756a1bada7d60 [file] [log] [blame]
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);
}
}