Что означает код ошибки 2 в пакете beacon_broadcast? - PullRequest
0 голосов
/ 14 апреля 2020

Я делаю приложение для вещания маяков, используя Flutter. Я использую библиотеку "beacon_broadcast" на pub.dev. Когда я пытаюсь запустить его, консоль говорит:

D/BeaconParser( 7318): Parsing beacon layout: m:2-3=beac,i:4-19,i:20-21,i:22-23,p:24-24,d:25-25
D/BluetoothAdapter( 7318): isLeEnabled(): ON
D/BluetoothAdapter( 7318): isLeEnabled(): ON
E/BeaconTransmitter( 7318): Advertisement start failed, code: 2

Что означает код ошибки 2? Мне не нужна никакая другая помощь, я просто хочу значения, поэтому я думаю, что мне не нужно показывать код.

Также, если возможно, добавьте список кодов ошибок и значений.

1 Ответ

1 голос
/ 14 апреля 2020

Каждая модель телефона имеет свой чип Bluetooth, каждый из которых поддерживает ограниченное количество «рекламных слотов». Каждый слот позволяет запускать одну рекламу Bluetooth LE. Если телефон уже использовал все доступные рекламные места, вы получите эту ошибку.

ADVERTISE_FAILED_TOO_MANY_ADVERTISERS
Added in API level 21
public static final int ADVERTISE_FAILED_TOO_MANY_ADVERTISERS
Failed to start advertising because no advertising instance is available.

Constant Value: 2 (0x00000002)

См .: https://developer.android.com/reference/android/bluetooth/le/AdvertiseCallback, в которой есть список всех и другие коды ошибок.

Поскольку слоты являются общим ресурсом телефона, возможно, что другое приложение может использовать некоторые из слотов. Старые телефоны, такие как Nexus 4, поддерживают только один слот. Новые телефоны, такие как Pixel 3a, поддерживают 10 или более слотов. Некоторые телефоны вообще не имеют слотов. См. Здесь список устройств без поддержки рекламы .

Каждый изготовитель телефона реализует часть стека Bluetooth, которая соединяет оборудование с операционной системой Android. Этот код почти всегда с закрытым исходным кодом. В зависимости от того, как этот OEM-уровень реализован (и насколько правильно), он может влиять на количество доступных рекламных мест.

К сожалению, нет API для запроса общего количества рекламных мест, которые теоретически доступны на телефоне. , Без исходного кода от OEM-производителя единственный способ определить это - восстановить заводские настройки на вашем телефоне (чтобы убедиться, что никакие другие приложения не используют слот), и создать приложение, которое пытается запустить одного рекламодателя за другим, считая до тех пор, пока один не потерпит неудачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...