Я столкнулся с той же проблемой, когда жестко закодировал длину полезной нагрузки в 20 байт , и для передачи 1 МБ файла потребовалось слишком много времени. Итак, я прочитал о MTU
MTU (максимальная единица передачи) : MTU указывает максимальное количество байтов, которое может быть отправлено в одной операции записи .
Просто запрос MTU не ускорит время передачи. requestMtu () просто вернет максимальное количество байтов, которое может быть отправлено на другое устройство во время записи на устройство.
Для ускорения процесса вам необходимо обновить полезную нагрузку, которую вы отправляете запись на подключенное устройство.
Предположим, что ваши текущие байты были отправлены как 100 байтов / se c:
Всего байт: 5000 байтов
Длина полезной нагрузки: 100 байт
1 операция записи: 100 байт / с c
Всего операций записи будет: 5000/100 = 50 с c
Теперь, скажем, после запроса значения MTU от устройства, оно получается равным 250 байт, и снова:
Всего байт: 5000 байт
Длина полезной нагрузки: 250 байт
1 операция записи: 250 байт / с c
Общее количество операций записи составит: 5000/250 = 20 se c // посмотрим, время сейчас сокращено.
Итак, как этого добиться:
1: подключение к устройству
2: запрос значения MTU (с максимумом 512, и он вернет вам поддерживаемое значение MTU устройства. В большинстве случаев это 251, , но только для информации 3 байта используются для внутренних целей, поэтому максимальный размер составляет MTU-3 )
3: используйте это значение MTU для создания полезной нагрузки
4: выполните операцию записи