beacon_broadcast flutter package 中的错误代码 2 是什么意思?

What does error code 2 in beacon_broadcast flutter package mean?

我正在使用 Flutter 制作一个信标广播应用程序。 我使用的库是 "beacon_broadcast" at 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 是什么意思?我不需要任何其他帮助,我只想要意思,所以我认为我不需要显示代码。

此外,如果可能,请添加错误代码和含义列表。

每个 phone 型号都有不同的蓝牙芯片,每个芯片支持的数量有限 "advertising slots"。每个插槽允许启动单个蓝牙 LE 广告。 如果 phone 已经用完了所有可用的广告位,则会出现此错误。

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,其中也列出了所有其他错误代码。

由于插槽是 phone 上的共享资源,其他应用可能正在使用其中的某些插槽。较旧的 phone 等 Nexus 4 仅支持一个插槽。较新的 phone 等 Pixel 3a 支持 10 个或更多插槽。一些 phones 根本没有任何插槽。 a list of devices with no advertising support.

见此处

每个 phone OEM 实现了蓝牙堆栈的一部分,将硬件桥接到 Android 操作系统。此代码几乎总是封闭源代码。根据此 OEM 层的实施方式(以及正确程度),它会影响可用广告位的数量。

遗憾的是,没有 API 可以查询 phone 上理论上可用的广告位总数。如果没有来自 OEM 的源代码,唯一的判断方法是在您的 phone 上恢复出厂设置(以确保安装的其他应用程序没有使用插槽),并构建一个尝试启动一个广告商的应用程序一个接着一个,一直数到一个不数