【发布时间】:2022-10-17 14:38:35
【问题描述】:
我正在使用 Android BluetoothManager 打开 BluetoothGattServer 并使用 BluetoothLeAdvertiser 做广告。示例 sn-p:
...
AdvertiseData advertiseData = new AdvertiseData.Builder()
.setIncludeTxPowerLevel(true)
.addServiceUuid(new ParcelUuid(myServiceUUID))
.build();
mBluetoothLeAdvertiser.startAdvertising(advertiseSettings, advertiseData, scanResponse, mAdvertiseCallback);
有时,在运行 Android 9 (Droidlogic w400) 的特定设备上,我的mAdvertiseCallback 会收到错误消息:
https://developer.android.com/reference/android/bluetooth/le/AdvertiseCallback#onStartFailure(int)
文档声称该代码是“int:广告启动失败的错误代码(请参阅 ADVERTISE_FAILED_* 常量)。”所以我应该对原因有所了解。
但是 ADVERTISE_FAILED_* 常量仅包含值 1-5,而我得到的 int 是 12。
以前有没有人遇到过这样的无证错误代码?不幸的是,我不能说是什么导致了错误。似乎是随机的。大多数时候,我的广告和整个 BLE GATT 服务器都能完美运行。
更新 - 经过一些测试后,我发现我可以通过在从 Android Studio 重新启动 android 应用程序时将中央设备连接到外围设备来重现它。连接回调确认在我初始化 GATT 服务器后立即连接了同一设备。这很好,因为它显示我的中央设备无法响应 android 应用程序关闭,但错误代码仍然有点神秘。
【问题讨论】:
标签: java android android-bluetooth