Как определить длину полученных байтов метода UsbRequest.queue (..)?

У меня проблемы с классом UsbRequest в Android 3.1.

Это мой код:

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(); } 

Размер данных массива равен 4096, но длина действительно полученных байтов намного меньше.

Как определить размер реально полученных байтов?

Благодарю.

Это была ошибка в Android . В затронутых версиях нет обходного пути, потому что реализация просто не пропускает длину.

Он был исправлен в JB-MR1 (начиная с уровня API 17).

Мне кажется, что текущий асинхронный USB-интерфейс не имеет возможности вернуть размер чтения. 2 «обходные пути» используют синхронные переводы, так как там вы получаете количество прочитанных / записанных байтов или, возможно, протокол, который вы реализуете, отправляет вам количество байтов, которое вы получите. Например, я в настоящее время реализую что-то, где каждый пакет более высокого уровня, который я получаю, имеет количество байтов в первых 4 байтах пакета. Основываясь на этом номере, я знаю, нужно ли мне делать несколько чтений.

Вы можете использовать request.queue(buffer, bufferLength); , Это должно решить вашу проблему. Теперь вам следует обратиться к документации по Android, это хорошо документировано и полезно.

Я считаю, что buffer.limit() должен возвращать количество полученных байтов. Это работает?

Intereting Posts
Индексирование приложений Android -> FirebaseAppIndexingInvalidArgumentException Параметр Android Camera setPictureSize вызывает штриховое изображение Открыть URL-адрес Soundcloud в собственном приложении Soundcloud из WebView Какая пусковая установка работает? Делиться намерениями через facebook для Android Robolectric Run Handler post Ошибка в подключенном проекте Android Engine Как получить координаты XY и размер пикселя TextView? Error: uncaughtException: Невозможно прочитать свойства 'сокеты' из null из Appium для Android эмулятора Развертывание в Google Play Store через API Есть ли ограничения в пакете android? Установленное приложение является сторонним или нет Убитый сервис Android и статические переменные Скрытие заголовка / панели уведомлений, когда устройство ориентировано на пейзаж Что это означает: Должен ли я явно установить «android: fullBackupContent», чтобы избежать резервного копирования определенного регистратора GCM?