我正在研究基于BLE的android应用程序。我在三星S4上测试的地方。 当我从最近的应用程序列表关闭应用程序时,应用程序做什么关闭蓝牙GATT。
问题是我是否从蓝牙设置中取消配对蓝牙设备。然后在第二次尝试如果用户尝试断开连接它也关闭蓝牙Gatt或在关闭BluetoothGatt它不关闭蓝牙gatt。 因此,三星S4上蓝牙gatt操作的行为非常不稳定。
private BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
if (status == BluetoothGatt.GATT_SUCCESS
&& newState == BluetoothProfile.STATE_CONNECTED) {
// Do something
} else if (status == BluetoothGatt.GATT_SUCCESS
&& newState == BluetoothProfile.STATE_DISCONNECTED) {
mBluetoothDeviceAddress = null;
mBluetoothGatt.disconnect();
mBluetoothGatt.close();
//....
} else if (status != BluetoothGatt.GATT_SUCCESS) {
mBluetoothDeviceAddress = null;
mBluetoothGatt.disconnect();
mBluetoothGatt.close();
//...
}
}
}
断开蓝牙连接。
public void disconnect() {
if (mBtAdapter == null) {
Log.w(TAG, "disconnect: BluetoothAdapter not initialized");
return;
}
if (mBluetoothGatt != null) {
Log.i(TAG, "disconnect");
// mBluetoothGatt.disconnect();
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
mBluetoothGatt.disconnect();
}
});
}
}
关闭蓝牙gatt。
public void close() {
if (mBluetoothGatt != null) {
if (mBluetoothDeviceAddress != null) {
Log.i(TAG, "close");
mBluetoothGatt.disconnect();
mBluetoothGatt.close();
// mBluetoothGatt.close();
}
mBluetoothGatt = null;
}
}
我正在执行所有 BluetoothGatt相关的服务操作。
设备:三星S4
Android版:5.0.1
内部版本号:LRX22C.19500XXUHOK2