Для моего приложения мне нужно установить соединение с подключенным устройством Arduino, вот код:
public String openConnection(UsbManager manager, Context context) {
// getting the driver with an external library...
UsbSerialDriver driver = availableDrivers.get(0);
PendingIntent pi = PendingIntent.getBroadcast(context, 0, new Intent(ACTION_USB_PERMISSION), 0);
manager.requestPermission(driver.getDevice(), pi);
UsbDeviceConnection connection = manager.openDevice(driver.getDevice());
if (connection == null) {
return "Found a device, but cannot connect";
}
// otherwise, continue and do stuff
}
Проблема в том, что когда устройство подключено, при первом открытии приложения отображается предупреждение с запросом разрешения, но если я нажимаю «ОК», соединение становится пустым, поэтому оно возвращается рано. Тем не менее, во второй раз он не запрашивает никакого разрешения, но соединение открыто, и все работает нормально.
Почему это происходит?
Я знаю, что это не самый правильный подход к открытию USB-соединения, но у меня есть другие проблемы, которые не присущи этому вопросу, поэтому я довольно заинтересован, чтобы понять , почему так происходит, чем что я должен сделать вместо этого
Я тестирую это на Android 8.1.0