看官们,我们在上一章回中介绍了BLE开发中蓝牙扫描设备的例子,本章回中我们将介绍BLE开发中蓝牙连接设备,闲话休提,言归正转。让我们一起Talk Android吧!

看官们,我们通过扫描蓝牙设备可以获得具体的蓝牙设备,接着我们需要连接此设备,接下来我们将使用文本结合代码的方式介绍如何连接蓝牙设备。

  • 1.创建BluetoothGatt类型的对象:BluetoothGatt mGatt = null;//不需要new对象,只声明对象就可以
  • 2.创建BluetoothGattCallback类型对象,并且重写onConnectionStateChange()方法;
  • 3.使用蓝牙设备(BluetoothDevice)的connectGatt()方法连接设备;
BluetoothGatt mGatt = null;
BluetoothGattCallback mBluetoothGattCallback = new BluetoothGattCallback() {
                @Override
                public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
                    super.onConnectionStateChange(gatt, status, newState);
                    Log.d(TAG, "onConnectionStateChange: "+status);
                    // do something
                }
            }
mGatt = mDevices.connectGatt(context,false,mBluetoothGattCallback));

介绍完上面的步骤后,有看官说连接设备挺简单呀,只有三个步骤。我想说的是:步骤比较简单,不过理解这些步骤不简单。因此我们对上面的代码做一个整体的讲解,以方便大家理解。

连接蓝牙设备,本质上是连接GATT服务器,使用蓝牙设备(BluetoothDevice)的connectGatt()方法可以完成连接工作。该方法返回一个BluetoothGatt类型的对象,它主要负责通信,因此提供了许多通信接口。我们可以把它当作GATT服务的客户端,它用来与服务端通信。以后在传输数据时以及关闭连接时都需要使用它。

连接设备是一个复杂的过程,因此需要处理连接的结果,如何处理呢?重写BluetoothGattCallback中的相关方法就可以,至于重写方法的具体内容,我们在后面章回中做详细介绍。在这里我们注意一下回调函数这种设计思路和扫描设备的设计思路一样: 连接时注册一个回调函数,然后在回调函数中处理连接结果。

最后,我们对连接蓝牙设备做一个问答式的总结,以加深大家对这部分知识的理解:

  • 连接设备需要知道如何去连接?使用蓝牙设备(BluetoothDevice)的connectGatt()方法。
  • 如何获取蓝牙设备?在扫描设备的回调方法中可以获取到蓝牙设备。
  • 如何确认连接成功还是失败?使用回调函数来确认,具体操作:重写BluetoothGattCallback中onConnectionStateChange方法。
  • 连接成功后如何管理连接?使用BluetoothGatt类型的对象进行管理。
  • 管理的具体内容有哪些?管理主要包含数据通信(读写数据),断开连接。

各位看官,关于Android中蓝牙连接设备的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!