【问题标题】:What does error code 2 in beacon_broadcast flutter package mean?beacon_broadcast颤振包中的错误代码2是什么意思?
【发布时间】:2020-04-14 03:58:54
【问题描述】:

我正在使用 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】:

    每个手机型号都有不同的蓝牙芯片,每个芯片都支持有限数量的“广告位”。每个插槽允许启动单个蓝牙 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 的源代码,唯一的判断方法是在您的手机上进行出厂重置(以确保没有其他安装的应用程序正在使用插槽),并构建一个尝试启动一个又一个广告商的应用程序,计数直到失败。

    【讨论】:

    • 感谢您的回答。 iOS的错误代码是否相同?我认为不会,因为错误代码似乎直接来自本机 API。我的猜测是 CoreLocation 错误代码和 CoreBluetooth 错误代码。
    • 在 Apple 上开始传输的错误比较少见,但它们的工作方式完全不同,您甚至不会看到类似的日志消息。
    猜你喜欢
    • 2021-11-19
    • 2015-05-18
    • 1970-01-01
    • 2021-06-21
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多