android - Android Lollipop 的 USB 连接问题
问题描述
目前我正在开发一个需要两个硬件才能通过 USB 连接到设备的应用程序。我遇到了一个错误,应用程序可以看到这两个设备,但应用程序只能与插入 USB 集线器的最后一个硬件建立连接。
android OS 版本是 5.1,我使用了 UsbManager 类。
有没有办法来解决这个问题?谢谢。
它发生在 mReader.open()
这是发生错误的代码片段:
public BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (ACTION_USB_PERMISSION.equals(action)) {
synchronized (this) {
Log.d(TAG,"BroadcastReceiver onReceive");
UsbDevice device = (UsbDevice) intent
.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if(mReader.isSupported(device)){
if (intent.getBooleanExtra(
UsbManager.EXTRA_PERMISSION_GRANTED, false)) {
if (device != null) {
Log.d(TAG,"BroadcastReceiver Opentask");
mReader.open(device);
}
}
}
}
} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
Log.d(TAG,"BroadcastReceiver ACTION_USB_DEVICE_DETACHED");
synchronized (this) {
UsbDevice device = (UsbDevice) intent
.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (device != null && device.equals(mReader.getDevice())) {
Log.d(TAG,"BroadcastReceiver Closetaks");
mReader.close();
}
}
}
}
};
这是从设备收到的错误:
java.lang.RuntimeException: Error receiving broadcast Intent { act=com.android.example.USB_PERMISSION flg=0x10 (has extras) } in ph.com.healthpods.fragments.BaseFragment$3@3b8349d7
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:876)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5280)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:963)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:758)
Caused by: java.lang.IllegalArgumentException: Cannot claim interface.
at com.acs.smartcard.Reader.open(SourceFile:1613)
at ph.com.healthpods.fragments.BaseFragment$3.onReceive(BaseFragment.java:278)
at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:866)
解决方案
推荐阅读
- vb.net - Vb.net解析更新的txt文件的最佳方法是什么
- bash - 如果 bash 变量值包含空格,则脚本阻塞
- sql - 运行 3 个月计数
- c - 骰子实验,增加最大投掷次数
- firebase - Polymerfire - 如何在页面之间重置 firebase-document?
- visual-studio - 有没有办法在 Visual Studio 或 MATLAB 中“映射”程序执行顺序?
- java - 匹配前面没有文字的电话号码
- javascript - CSS - 检查收音机上的李背景颜色
- sql - 在 Power BI 中使用计数和分组依据
- java - Groovy 删除路径的开头