FTDI может открыть соединение, только если датчик подключен до запуска
Я использую этот драйвер D2xx: http://www.ftdichip.com/Android.htm
И если я запускаю приложение, когда мой датчик подключен, я могу нормально общаться с датчиком. Но если я отключу и снова подключу датчик, когда приложение открыто, я вижу, что есть 2 устройства, но openByIndex возвращает ноль. Вот код
Манифест частей
<uses-feature android:name="android.hardware.usb.host" />
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/usb_device_filter" />
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" android:resource="@xml/usb_device_filter" />
Часть FTDI
# c is the main activity, FTDI is a class instantiated from mainactivity
try {
ftD2xx = D2xxManager.getInstance(c);
} catch (D2xxManager.D2xxException ex) {
ex.printStackTrace();
}
# devCount always returns correct amount of sensors
devCount = ftD2xx.createDeviceInfoList(c)
#This returns null if the sensor was unplugged and plugged back in again.
ftDevice = ftD2xx.openByIndex(c, 0);
PS. Я думаю, что это может быть какая-то ошибка разрешения, но я не уверен, как ее исправить или как запросить разрешение у пользователя на использование датчика, когда он подключен во время работы приложения. Вроде как эквивалент.
public boolean isStoragePermissionGranted() {
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(getContext(), android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
== PackageManager.PERMISSION_GRANTED) {
Log.v("permission","Permission is granted");
return true;
} else {
Log.v("permission", "Permission is revoked");
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
return false;
}
}
else { //permission is automatically granted on sdk<23 upon installation
Log.v("permission","Permission is granted");
return true;
}
}