一、 BluetoothGattCallback
BLE蓝牙连接的回调
public class BluetoothGattCallback extends android.bluetooth.BluetoothGattCallback{
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState//更新的状态);
runOnUiThread(new Runnable() {
@Override
public void run() {
switch (newState){
case BluetoothGatt.STATE_CONNECTED:
tv_status.setText("已连接");
mAdapter.getBluetoothLeScanner().stopScan(callback);
Log.d(TAG, "run: "+1);
break;
case BluetoothGatt.STATE_CONNECTING:
tv_status.setText(s);
Log.d(TAG, "run: "+2);
break;
case BluetoothGatt.STATE_DISCONNECTED:
tv_status.setText("未连接");
Log.d(TAG, "run: "+3);
break;
}
}
});
}
}
二、使用
//列表item监听
public AdapterView.OnItemClickListener a = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
//因为这里的devices的list和Listview上对的list是同时存放的,所以对应的位置也是一一对应的。
BluetoothDevice bluetoothDevice = deviceList.get(position);
bluetoothGatt = bluetoothDevice.connectGatt(MainActivity.this,false,bluetoothGattCallback);//这里传入BluetoothGattCallback的实例化对象
s = "正在连接"+bluetoothDevice.getName();
}
};
总结
因为蓝牙搜索比较消耗内存,所以一定要记得停止搜索。
一: 安卓BLE蓝牙开发总结(一):BLE蓝牙的打开与搜索
三: 安卓BLE蓝牙开发总结(三):接受和传输数据:BLE蓝牙的连接