首页 > 解决方案 > 如果传感器在启动前连接,FTDI 只能打开连接

问题描述

我正在使用这个 D2xx 驱动程序:http: //www.ftdichip.com/Android.htm

如果我在插入传感器时运行应用程序,我可以与传感器通信。但是,如果我在应用程序打开时拔下并重新插入传感器,我可以看到有 2 个设备,但 openByIndex 返回 null。这是一些代码。

清单部分

<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;
    }
}

标签: androidftdi

解决方案


推荐阅读