三星Galaxy S4 BLE蓝牙GATT关闭,断开不正常的行为

时间:2016-02-26 07:17:59

标签: android samsung-mobile android-bluetooth bluetooth-lowenergy

我正在研究基于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

0 个答案:

没有答案