beacon_broadcast flutter程序包中的错误代码2是什么意思?

问题描述 投票:0回答:1

我正在使用Flutter制作信标广播应用。我正在使用的库是pub.dev上的“ beacon_broadcast”。当我尝试启动它时,控制台会说:

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是什么意思?我不需要任何其他帮助,我只需要含义,所以我认为不需要显示代码。

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

flutter dart ibeacon beacon
1个回答
1
投票

每个电话型号都有不同的蓝牙芯片,每个蓝牙芯片都支持有限数量的“广告插槽”。每个插槽都允许启动一个蓝牙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个或更多插槽。某些手机​​根本没有任何插槽。参见a list of devices with no advertising support

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

[遗憾的是,没有API可以查询手机理论上可用的广告位总数。如果没有OEM的源代码,唯一的办法就是在手机上恢复出厂设置(确保没有安装其他应用程序正在使用插槽),然后构建一个尝试逐个启动广告客户的应用程序直到失败为止。

© www.soinside.com 2019 - 2024. All rights reserved.