Android蓝牙在连接时关闭

时间:2015-09-25 16:20:46

标签: android bluetooth

显然Android 5.0及更高版本搞砸了蓝牙LE的使用,我需要为它创建一个解决方法。
我注意到连接到已发现设备的时间很长 但是,如果蓝牙服务关闭然后再打开,它通常会更快地连接。

我正在处理的应用需要在Android 4.3及更高版本上运行 通常我只是推出 BluetoothGatt.connect(),一切都很好 但是使用Android 5.0+ Connect()会启动,但在最终确定操作之前会在那里停留很长时间。

考虑到这一点,我放入一个 Handler()。postDelayed()例程,超时10秒,以查看“看到”连接是否成功完成。
如果Connection尚未最终确定,我想以编程方式完全关闭手机的蓝牙服务,然后再将其打开。

但是当我尝试执行 BluetoothAdapter.disable()时,应用程序崩溃了。
我只能猜测是因为BluetoothGatt.connect()活动仍在尝试在后台完成(通过BluetoothLEService)。

我可以手动关闭手机的蓝牙服务,无论其状况如何,都可以正常工作 因此,当Connect()尝试仍在尝试执行时,如何以编程方式关闭手机的蓝牙服务 - 基本上现在关闭

非常感谢您的建议/意见 感谢

1 个答案:

答案 0 :(得分:0)

很多试用和试用错误我发现了一个似乎有效的序列 在我的处理程序()。postDelayed()我现在有以下代码

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
      if (!mConnected && !paymentDone && myOSVersionNum >= 5.0) {
          mBluetoothLeService.initialize();
          mBluetoothLeService.disconnect();
          BluetoothAdapter myBTadapter = BluetoothAdapter.getDefaultAdapter();
          myBTadapter.disable();
          while (myBTadapter.isEnabled()){
            // Wait Here Until DISABLED
          }
          // Now Turn Back ON & Re-Connect
          myBTadapter.enable();
          mBluetoothLeService.connect(mDeviceAddress);
       }
      }
    }, 6000);   // 6 Seconds  (6,000 Milliseconds)  

我确信其他人会发现我最终采用的方法存在问题,并希望将其批评为更好的方法。

尽管如此,我不知道这对其他人是否有任何帮助,但似乎我不得不: 1.终止服务操作(initialize()& disconnect())
2.定义新的BT适配器(现有的原始定义不起作用)
3.利用新的BT适配器重新开始。