2015-07-14 3 views
1

У меня есть рабочее устройство с Android. он отправляет и получает данные точно через приложение Android. Но теперь моя проблема в том, что я хочу отправить некоторые аудио-файлы HEX на мое устройство BLE. И его больше, чем 20 байт. Как я могу отправить такие данные на устройство BLE. ??Как отправить аудиофайл HEX на устройство Ble

ответ

4

Для отправки данных, превышающих 20 байтов, вам необходимо изменить MTU-обмен.

Для API уровня 21, вы можете использовать requestMtu (Android Developer), он ведет переговоры с периферийным устройством, и вы не можете определить до 512 байт.

Значение MTU определено на периферийной стороне. Помните, что размер данных, который вы можете отправить, - это байты MTU-3.

Для уровня API LEVEL менее 21 MTU предварительно определен и вы не можете изменять.

+0

Я боролся с этим часами, записывая 512 байт и получая 509. Не могли бы вы объяснить, почему максимальный размер данных должен быть MTU - 3 байта? – Omer

+0

В основном http://stackoverflow.com/questions/36435575/bluetoothgatt-negotiating-new-mtu-succeeds-but-new-size-cannot-be-used-3-bytes – Omer

2

Ограничение по размеру может отличаться от 20, я полагаю, что размер MTU является оборотным, поэтому вы никогда не должны жестко кодировать какие-либо предположения о размерах.

Чтобы получить это право, во-первых, внутри onCharacteristicReadRequest вы просто проверяете смещение и даете все данные из этой точки в ответ.

затем в onDescriptorWriteRequest, если для подготовленногоWrite установлено значение true, вам необходимо сохранить полученные значения и объединить их после вызова onExecuteWrite().

Пример реализации доступны на: https://github.com/DrJukka/BLETestStuff/blob/master/MyBLETest/app/src/main/java/org/thaliproject/p2p/mybletest/BLEAdvertiserLollipop.java

+1

BTW, вчера проверял и выяснил, что я могу установить размер MTU до 517 байт. 518 дал некоторую ошибку уже. –

0

Одним из способов вы можете продолжить, чтобы разделить аудио шестигранник на небольшие кусочки данных .Вы можете использовать профиль последовательного порта, чтобы отправить эти куски данных .Once получены все данные вы можете комбинировать и хранить с помощью некоторого алгоритма слияния (google it), а затем возвращать его обратно в звуковой шестнадцатеричный файл.

+0

Нет. Я не могу. Я использую профили GATT. –

Смежные вопросы