上一篇写到搜索蓝牙设备,这一篇写连接设备。
在onLeScan回调中把设备装到一个集合中进行展示,注意此处会出现设备被重复扫描到的现象,因为设备是不停的向外发送广播的,所以需要把重复的设备进行过滤掉。(需要注意onLeScan回调方法是在异步线程中进行的,如果需要刷新UI的话,需要到主线程中去刷新UI界面。)
关于界面展示列表我就不写了。
下面就是连接方法了。
核心方法:connectGatt(Context context, boolean autoConnect,BluetoothGattCallback callback);
第一个参数是上下文对象,第二个参数是是否自动连接,第三个参数是连接的回调。 返回值是BluetoothGatt对象,通过这个对象就可以和设备通讯了。
代码:
device.connectGatt(MainActivity.this,false,gattCallback);
private BluetoothGattCallback gattCallback = new BluetoothGattCallback() {
//链接状态改变回调此方法。
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState);
switch (newState){
case BluetoothGatt.STATE_CONNECTED://已连接
Log.e("lee","已连接");
break;
case BluetoothGatt.STATE_CONNECTING://连接中
Log.e("lee","连接中");
break;
case BluetoothGatt.STATE_DISCONNECTED://已断开
Log.e("lee","已断开");
break;
case BluetoothGatt.STATE_DISCONNECTING://断开中
Log.e("lee","断开中");
break;
}
}
};
以上就完成了蓝牙设备的连接。