我在Android 3.1中遇到UsbRequest类问题。
这是我的代码:
ByteBuffer buffer = ByteBuffer.allocate(4096);
buffer.order(ByteOrder.LITTLE_ENDIAN);
UsbRequest request = new UsbRequest();
request.initialize(mConnection, mEndpointIn);
request.queue(buffer, 4096);
if (mConnection.requestWait() == request) {
byte[] data = buffer.array();
}
数组data
的大小为4096,但实际接收的字节长度要小得多。
如何确定实际接收字节的大小?
感谢。
答案 0 :(得分:5)
这是bug in Android。在受折磨的版本中,没有解决方法,因为实现只是没有通过长度。
JB-MR1中的fixed(API级别17以上)。
答案 1 :(得分:3)
在我看来,当前的异步USB API无法返回读取大小。 2“变通办法”使用同步传输,因为您会收到读/写的字节数,或者您正在实现的协议会向您发送您将收到的字节数。例如。我目前正在实现一些功能,其中我收到的每个更高级别的数据包都包含数据包前4个字节的字节数。基于这个数字,我知道我是否必须进行多次读取。
答案 2 :(得分:1)
您可以使用request.queue(buffer, bufferLength);
。这应该可以解决您的问题。现在,你应该参考android文档,它有很好的文档和帮助。
答案 3 :(得分:0)
我相信buffer.limit()
应该返回接收的字节数。这有用吗?