Расширенная реклама Android BLE: ADVERTISE_FAILED_DATA_TOO_LARGE, несмотря на расширенную поддержку рекламыAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Расширенная реклама Android BLE: ADVERTISE_FAILED_DATA_TOO_LARGE, несмотря на расширенную поддержку рекламы

Сообщение Anonymous »

Приложение BLE в Android и попытка использовать расширенную рекламу для отправки полезных данных, превышающих стандартный предел в 31 байт. Однако в журналах я постоянно сталкиваюсь со следующей ошибкой:

Код: Выделить всё

Device supports extended advertising.Total Possible Length: 192
Service Data: Key: 0000180d-0000-1000-8000-00805f9b34fb, Value Size: 28 bytes, Total Size: 46 bytes (UUID: 16 + Value: 28 + Overhead: 2)
Flags: Fixed Size: 3 bytes
Total Advertisement Size: 49 bytes
Advertisement data is too large.
Выдается ошибка «Данные объявления слишком велики», несмотря на то, что общий размер составляет всего 49 байт.
Действия, которые я предпринял: В журнале показано: Общая возможная длина: 192.
< ol start="3">
[*]Настроенные параметры рекламы для расширенной рекламы:

Код: Выделить всё

val settings = AdvertiseSettings.Builder()

Код: Выделить всё

.setAdvertiseMode(AdvertiseSettings.ADVERTISE_MODE_LOW_LATENCY)

Код: Выделить всё

.setTxPowerLevel(AdvertiseSettings.ADVERTISE_TX_POWER_HIGH)

Код: Выделить всё

.setConnectable(false)

Код: Выделить всё

.build()
[*]Созданные рекламные данные

Код: Выделить всё

val serviceUUID: UUID = UUID.fromString("0000180D-0000-1000-8000-00805F9B34FB")

Код: Выделить всё

val staticMessage = "123456789012345678901234567" // 27 bytes

Код: Выделить всё

val serviceData = staticMessage.toByteArray()

Код: Выделить всё

val data = AdvertiseData.Builder()

Код: Выделить всё

.addServiceData(ParcelUuid(serviceUUID), serviceData)

Код: Выделить всё

.setIncludeTxPowerLevel(false)

Код: Выделить всё

.build()

Благодаря 27-байтовому статическому сообщению реклама работает отлично. Однако добавление 1 дополнительного байта (всего 28 байт) приводит к следующей ошибке:

Код: Выделить всё

E/Dharmik: Advertisement data is too large
. Дополнительная информация:
  • < li>Протестированные устройства:
  • Realme 6i (Realme RMX2002) — Android 11.
  • Samsung S24 — Android 14.
    < li>Библиотека BLE: API-интерфейсы Android по умолчанию (например, AdvertiseSettings, AdvertiseData)
1. Требуются ли дополнительные действия по настройке для включения расширенной рекламы на Android?
2.Возможно ли, что устройство или прошивка имеют ограничения на расширенную рекламу, несмотря на заявленную поддержку?
3.Как я могу отладить или устранить эту ошибку, чтобы разрешить более крупные пакеты рекламы?`< /п>

Подробнее здесь: https://stackoverflow.com/questions/792 ... ite-extend
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»