收藏
回答

关于蓝牙的问题 wx.onBluetoothAdapterStateChange

wx.onBluetoothAdapterStateChange

关键代码如下

Page({
onshow(){
    wx.openBluetoothAdapter({
      complete: (res) => {
        console.error('openBluetoothAdapter complete', res);
        wx.onBluetoothAdapterStateChange((res) => {
          console.error('onBluetoothAdapterStateChange callback', res);
        });
      }
   }
});
  • Android手机:如果手机蓝牙是关闭的,然后用户再来回切换操作系统的蓝牙开关,始终不会打印onBluetoothAdapterStateChange callback

  • Android手机:如果手机蓝牙是开启的,然后用户再来回切换操作系统的蓝牙开关,可以正常打印onBluetoothAdapterStateChange callback

  • Android手机:如果手机蓝牙是开启的,然后退出小程序(点击微信左上角的“X”按钮),然后再进来,重复步骤循环几次,然后切换操作系统的蓝牙开关,发现会重复(就是注册总次数)打印:onBluetoothAdapterStateChange callback

  • IPhone无以上问题

结论

  • Android手机一定要wx.openBluetoothAdapter成功一次以后才能正常监听wx.onBluetoothAdapterStateChange,而且存在onBluetoothAdapterStateChange重复注册问题

  • IPhone 操作正常

建议

  • Android 跟 Iphone 手机保持一致,理论上 wx.onBluetoothAdapterStateChange是用来监听蓝牙状态的,与用户wx.openBluetoothAdapter是否成功无关

  • 蓝牙功能可否跟获取地位信息获取用户信息一样,开发者根据业务需要调用蓝牙API,用户来选择允许或者拒绝



回答关注问题邀请回答
收藏

5 个回答

  • 还有王法吗
    还有王法吗
    2023-11-05

    onShow,每次页面切换都会显示时都会执行

    上面代码,在 onshow 里执行了初始化适配器,在回调里注册了监听适配器开关,多次 onshow,会多次初始化,会多次注册监听。

    onBluetoothAdapterStateChange
    


    放在 onLoad 里试试


    2023-11-05
    有用
    回复
  • 王二的长安城
    王二的长安城
    2020-07-06

    楼主这个问题解决了吗

    2020-07-06
    有用
    回复 1
    • 只吃第二
      只吃第二
      2020-12-14
      我是这样做的开个定时器通过 wx.getSystemInfo 获取系统信息,当蓝牙和GPS都开启的时候清除定时器,执行开启蓝牙和GPS成功的代码,这个方法很.......,但是没办法
      2020-12-14
      回复
  • Djune
    Djune
    2017-07-07

    又木有反应了?

    2017-07-07
    有用
    回复
  • 我有勇气与你在一起
    我有勇气与你在一起
    2017-07-05

    android手机,如果没有打开蓝牙,进入小程序,接下来就收不到蓝牙状态改变的监听

    android手机,如果打开蓝牙,进入小程序,就可以收到蓝牙状态改变的监听

    ios不存在这个问题。。。

    2017-07-05
    有用
    回复
  • 饭饭
    饭饭
    2017-07-05

    想问一下 将来getshareinfo 会支持 获得名称吗?   现在没有名称实在太不方便了,多了很多麻烦的事...


    2017-07-05
    有用
    回复
登录 后发表内容