ADVERTISE_FAILED_DATA_TOO_LARGE только с другим UUID службы - PullRequest
0 голосов
/ 12 июля 2020

Я начинаю рекламодателя с такими данными:

AdvertiseData.Builder()
    .setIncludeDeviceName(false)
    .addServiceUuid(ParcelUuid(SERVICE_UUID))
    .addServiceData(ParcelUuid(SERVICE_UUID), myByteArray)
    .build()

С определенным SERVICE_UUID:

UUID.fromString("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")

Работает. Но если я изменю UUID (даже одну из цифр в конце), я получу onStartFailure с 1 кодом ошибки, что, согласно документации, означает, что рекламные данные слишком велики. Чтобы тот же код работал с новым UUID, мне нужно уменьшить myByteArray до пары байтов и удалить .addServiceUuid(ParcelUuid(SERVICE_UUID)).

Есть идеи? Я много раз тестировал, и это стабильно происходит, только если не использовать «один» UUID сервиса. Переустановленное приложение, перезапущенное устройство, AS и т. Д. c.

Маловероятным объяснением (помимо ошибки в структуре) может быть то, что этот UUID является каким-то особенным, что позволяет транслировать больше данных, но даже если, странно, что с "другими" UUID я могу транслировать только пару байтов. Похоже, что один UUID работает так, как ожидалось.

...