FATAL EXCEPTION: USBMonitor
使用的库:saki4510t/UVCCamera
Android10系统
错误如下:
E/AndroidRuntime: FATAL EXCEPTION: USBMonitor
Process: com.xxx.xxx, PID: 16324
java.lang.SecurityException: User has not given 10247/com.xxx.xxx permission to access device /dev/bus/usb/002/002
at android.os.Parcel.createException(Parcel.java:2091)
at android.os.Parcel.readException(Parcel.java:2059)
at android.os.Parcel.readException(Parcel.java:2007)
at android.hardware.usb.IUsbSerialReader$Stub$Proxy.getSerial(IUsbSerialReader.java:123)
at android.hardware.usb.UsbDevice.getSerialNumber(UsbDevice.java:148)
at com.serenegiant.usb.USBMonitor.getDeviceKeyName(USBMonitor.java:663)
at com.serenegiant.usb.USBMonitor.getDeviceKey(USBMonitor.java:696)
at com.serenegiant.usb.USBMonitor.updatePermission(USBMonitor.java:399)
at com.serenegiant.usb.USBMonitor.hasPermission(USBMonitor.java:389)
at com.serenegiant.usb.USBMonitor$2.run(USBMonitor.java:526)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.os.HandlerThread.run(HandlerThread.java:67)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.usb.UsbUserSettingsManager.checkPermission(UsbUserSettingsManager.java:186)
at com.android.server.usb.UsbSerialReader.getSerial(UsbSerialReader.java:96)
at android.hardware.usb.IUsbSerialReader$Stub.onTransact(IUsbSerialReader.java:84)
at android.os.Binder.execTransactInternal(Binder.java:1028)
at android.os.Binder.execTransact(Binder.java:1001)
callee: null 1579/4543
解决方案:
- 确保有 相机权限
- app/src/main/res/xml/device_filter.xml 里面需要有如下配置,确保标签是usb,这里是拦截所有的UVC设备,可以根据实际场景配置usb-device
<usb>
<usb-device class="239" subclass="2" /> <!-- all device of UVC -->
</usb>