收藏
回答

关于蓝牙的问题 wx.onBluetoothAdapterStateChange

问题模块
API和组件

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,用户来选择允许或者拒绝



最后一次编辑于  2017-07-05
回答关注问题邀请回答
收藏

3 个回答

  • Djune
    Djune
    2017-07-07

    又木有反应了?

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

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

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

    ios不存在这个问题。。。

    2017-07-05
    赞同
    回复
  • 饭饭
    饭饭
    2017-07-05

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


    2017-07-05
    赞同
    回复