flutter - beacon_broadcast颤振包中的错误代码2是什么意思?
问题描述
我正在使用 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 是什么意思?我不需要任何其他帮助,我只想要含义,所以我认为我不需要显示代码。
此外,如果可能,请添加错误代码和含义列表。
解决方案
每个手机型号都有不同的蓝牙芯片,每个芯片都支持有限数量的“广告位”。每个插槽允许启动单个蓝牙 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 个或更多插槽。有些手机根本没有任何插槽。请参阅此处了解不支持广告的设备列表。
每个手机 OEM 都实现了将硬件连接到 Android 操作系统的蓝牙堆栈的一部分。此代码几乎总是封闭源代码。根据此 OEM 层的实现方式(以及正确程度),它会影响可用广告位的数量。
不幸的是,没有 API 可以查询理论上手机上可用的广告位总数。如果没有来自 OEM 的源代码,唯一的判断方法是在您的手机上进行出厂重置(以确保没有其他安装的应用程序正在使用插槽),并构建一个尝试启动一个又一个广告商的应用程序,计数直到一个失败。
推荐阅读
- ruby-on-rails - How to fix ActionController::UnknownFormat error for json rendered reponse in RSpec
- azure-data-factory - 如何在 REST 数据集到 SQL 数据集的映射中使用动态日期
- parse-platform - 如何限制对客户端可见的解析配置参数?
- pentaho - 如何映射来自 2 个输入的字段以生成 1 个输出
- python - 无法设置 QTableView 的行高
- python - 在 Django 中设计正确的模式关系
- python-3.x - 使用python在ms word中的合并单元格上插入数据
- amazon-elastic-beanstalk - 具有 AWS Elastic Beanstalk 问题的瘦服务器
- javascript - 当父级更改其宽度/高度时调整画布元素的大小
- python - 训练数据所花费的时间。长短期记忆体