Android usb requestWait not return

ByteBuffer byteBuffer = ByteBuffer.allocate(9);; UsbRequest request = new UsbRequest(); request.initialize(mConnection,mEndpointIntr); boolean b = request.queue(byteBuffer, 9); Log.d(TAG, "start the request wait"); UsbRequest ur = mConnection.requestWait(); 

Я хочу использовать прерывание Android USB. Вышеприведенный код представляет собой поток для приема данных с моей собственной платы USB. Но когда я пытаюсь вызвать UsbRequest ur = mConnection.requestWait(); Функция не возвращается, она всегда запускается в requestWait() . Почему это происходит?

Solutions Collecting From Web of "Android usb requestWait not return"

requestWait() в вашем коде будет ждать результата request.queue(byteBuffer, 9)

Вот несколько возможных причин, по которым он не возвращается:

  1. Ваша очередь запросов находится на другой конечной точке, чем то, что на самом деле передает ваше устройство USB. Дважды проверьте, что вы слушаете правильный интерфейс и конечную точку.

  2. На стороне прошивки устройства USB не создавайте конечную точку прерывания для общего класса интерфейса, такого как HID. Создайте новый специфический для вендора интерфейс, иначе ядро ​​может получить интерфейс, если он HID, и очередь запросов может завершиться неудачно, вот что случилось со мной.

На моем собственном USB-HID-устройстве с двумя конечными точками (IN и OUT), подключенными к MK802, я столкнулся с той же проблемой (очередность запроса была возвращена false). У меня было требованиеInterface, вызванное с ложным. Упорядочение следующего помогло, я получаю данные в порядке.

 c.claimInterface(device.getInterface(0), true);