Android BLE 广告商即使调用停止广告方法也会传输信标, 特别是当应用程序从后台返回时.



如果应用程序位于前台并且我调用bleAdvertiser.stopAdvertising()方法,我可以停止广告。
当我的屏幕熄灭并且我的应用仍在投放广告时,会出现此问题。当我的屏幕关闭时,该应用程序会播发广告,这是意料之中的。但是, 当我的应用程序进入前台并且我按下一个bleAdvertiser.stopAdvertising()的按钮时,BLE 信标仍然保持打开状态.我通过在名为nRF Connect的第三个pert应用程序上扫描来测试它。
只是为了确保它不是nRF Connect应用程序问题, 我用检测BLE信标的硬件板对其进行了测试并得到了相同的结果, 这意味着我的应用程序仍在发送信标.
当我关闭/销毁应用程序时,信标停止 (在选项卡中横向滑动(.
我在应用程序中执行以下操作:

bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
bleAdvertiser = bluetoothAdapter.getBluetoothLeAdvertiser();
advertiseSettings = new AdvertiseSettings.Builder() ....
bleAdvertiser.startAdvertising(advertiseSettings, advertisedata, advertisingCallback);

按下按钮停止信标我做:

bleAdvertiser.stopAdvertising(advertisingCallback);

我怀疑advertisingCallback变量与您第一次开始做广告时的情况不同。 否则,停止将不起作用。

我建议在启动和停止时记录该实例以查找任何差异。 很容易让 Android 应用生命周期回调意外更改变量,从而导致此类问题。

相关内容

最新更新