blob: 828610fec847bd54e0ed7c7dc69656059f35d808 [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.UsbManager;
import android.os.UserHandle;
import android.os.UserManager;
import java.util.ArrayList;
import java.util.HashMap;
/** Queues work to the BootUsbService job to scan for connected devices. */
public class BootUsbScanner extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// Only start the service for the non-system user, or for the system user if it is running
// as a "real" user. This ensures the service is started only once and is started even on a
// foreground user switch.
if (context.getUserId() == UserHandle.USER_SYSTEM
&& UserManager.isHeadlessSystemUserMode()) {
return;
}
// we defer this processing to BootUsbService so that we are very quick to process
// LOCKED_BOOT_COMPLETED
UsbManager usbManager = context.getSystemService(UsbManager.class);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
if (deviceList.size() > 0) {
Intent bootUsbServiceIntent = new Intent(context, BootUsbService.class);
bootUsbServiceIntent.putParcelableArrayListExtra(
BootUsbService.USB_DEVICE_LIST_KEY, new ArrayList<>(deviceList.values()));
context.startForegroundService(bootUsbServiceIntent);
}
}
}