Android BLE广告商即使调用了停止广告方法也会发送信标,特别是当应用程序从后台返回时
如果应用程序位于前台,我可以停止广告,并调用Android BLE广告商即使调用了停止广告方法也会发送信标,特别是当应用程序从后台返回时,android,bluetooth-lowenergy,beacon,Android,Bluetooth Lowenergy,Beacon,如果应用程序位于前台,我可以停止广告,并调用bleAdvertiser.stopAdvertising()方法。 当我的屏幕关闭且我的应用程序仍在做广告时,问题就会出现。当我的屏幕关闭时,应用程序会做广告,这是意料之中的。但是,当我的应用程序出现在前台时,我按下了一个按钮,该按钮会执行bleAdvertiser.stopAdvertising(),BLE指示灯仍然亮着。我通过扫描第三个名为nRF Connect的pert应用程序进行了测试。 为了确保这不是nRF Connect应用程序的问题,我
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);
我怀疑
advisingcallback
变量在某种程度上与您第一次开始做广告时的实例不同。否则,停止将不起作用
我建议在开始和停止时都记录该实例,以查找任何差异。很容易让Android应用程序生命周期回调意外地改变变量,从而导致类似的问题。我怀疑
advisingcallback
变量与您第一次开始发布广告时的情况不同。否则,停止将不起作用
我建议在开始和停止时都记录该实例,以查找任何差异。很容易让Android应用程序生命周期回调意外地改变这样的变量,导致这样的问题