Java Android UsbRequest.queue(ByteBuffer)忽略位置、限制等。?

Java Android UsbRequest.queue(ByteBuffer)忽略位置、限制等。?,java,android,usb,usb-drive,Java,Android,Usb,Usb Drive,我当前在使用UsbRequest.queue(ByteBuffer,int)时遇到问题 它似乎忽略了ByteBuffer的位置,并且总是在缓冲区中的位置0处开始写入。然后将缓冲区的位置设置为读取的字节数 这怎么会被忽视呢?关于如何在ByteBuffer中指定起始位置有什么想法吗 谢谢, MagnusEDIT2:所以我现在基本上是使用一个临时缓冲区,然后将数据相应地复制到最终缓冲区 编辑:这不是一个解决方案!包裹只是将ByteBuffer的位置设置为偏移 好的,我找到了一个使用ByteBuffe

我当前在使用UsbRequest.queue(ByteBuffer,int)时遇到问题

它似乎忽略了ByteBuffer的位置,并且总是在缓冲区中的位置0处开始写入。然后将缓冲区的位置设置为读取的字节数

这怎么会被忽视呢?关于如何在ByteBuffer中指定起始位置有什么想法吗

谢谢,
Magnus

EDIT2:所以我现在基本上是使用一个临时缓冲区,然后将数据相应地复制到最终缓冲区

编辑:这不是一个解决方案!包裹只是将ByteBuffer的位置设置为偏移

好的,我找到了一个使用ByteBuffer#wrap(字节[]数组,int偏移量,int长度)的解决方法

    int length = dest.remaining();

    // workaround: UsbRequest.queue always writes at position 0 :/
    ByteBuffer tmp = ByteBuffer.wrap(dest.array(), dest.position(), length);
    if(!inRequest.queue(tmp, length)) {
        throw new IOException("Error queueing request.");
    }

    UsbRequest request = deviceConnection.requestWait();
    if (request == inRequest) {
        dest.position(dest.position() + tmp.position());
        return tmp.position();
    }

    throw new IOException("requestWait failed! Request: " + request);