最近有这个需求,很是头疼,试了好久都没有成功,最终还是找到了解决方法。
当我们连接成功后,会在 onConnectionStateChange 拿到回调,这里我们可以获得到device,同时我们需要拿到BluetoothGattServer。
@Override
public void onConnectionStateChange(BluetoothDevice device, int status, int newState) {
super.onConnectionStateChange(device, status, newState);
if (newState == BluetoothProfile.STATE_CONNECTED){
mDevice = device;
// 连接成功后,需要调用connect
mBluetoothGattServer.connect(device, false);
}else {
mDevice = null;
}
}
// 主动断开时,调用此方法
private void cancelConnection(){
if (mDevice != null) {
mBluetoothGattServer.cancelConnection(mDevice);
}
}