我现在正在从 Android USB HID 主机与设备进行通信。我在同一个界面中有一个读取端点和一个写入端点。在我做的 Android 主机上
UsbInterface Intf = _usbDevice.getInterface(0);
UsbEndpoint Ep = Intf.getEndpoint(1);
UsbDeviceConnection Connection = _usbManager.openDevice(_usbDevice);
Connection.claimInterface(Intf, true);
Connection.bulkTransfer(Ep, data, data.length, 0);
Connection.releaseInterface(Intf);
Connection.close();
所以对于写作我是这样的:认领接口(interface) -> 转移 -> 释放接口(interface) -> 关闭
为了阅读,我在另一个线程中做同样的事情。
每次在两个端点之一(同一接口(interface)中的两个端点)上进行读取或写入时,是否需要打开、声明、释放和关闭接口(interface)?或者我可以在我的程序开始和结束时打开、声明、释放和关闭它们,并且在程序生命周期中读取和写入端点,而无需在每次批量传输时声明和释放吗?
最佳答案
在我的例子中(LG G4、Android 5.*),我已经定义了所有需要的对象(UsbDeviceConnection、UsbEndpoint、UsbInterface 等)的私有(private)静态。
我正在执行 Android 在其 usb host page 上所写的全部进度.
初始化完成后,我只使用 queue()和 requestWait() 在端点与初始化设备通信,直到用户释放设备。
因此我不认为你需要总是做你发布的链:声明接口(interface) -> 传输 -> 释放接口(interface) -> 关闭 ...
关于Android USB HID 在 bulktranfer 周围声明和发布接口(interface)是否必要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26642291/