代码之家  ›  专栏  ›  技术社区  ›  Xavier Gonsalves

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

  •  0
  • Xavier Gonsalves  · 技术社区  · 8 年前

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

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

    按下按钮停止信标I do:

    bleAdvertiser.stopAdvertising(advertisingCallback);
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   davidgyoung    8 年前

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

    我建议在开始和停止时都记录该实例,以查找任何差异。很容易让Android应用程序生命周期回调意外地改变这样的变量,从而导致这样的问题。

    推荐文章