如果Android中的BLE设备连接失败,如何通知用户?

时间:2017-04-27 19:48:28

标签: android callback connection bluetooth-lowenergy gatt

除了等待和测试连接之外,如何通知用户他们尝试连接的设备是否连接。尝试connectGatt()后,连接失败似乎没有任何回调。 谢谢!

1 个答案:

答案 0 :(得分:0)

方法:connGATT()有3个参数。第三个是回调:

mBluetoothGatt = device.connectGatt(this, false, mGattCallback);

如果你想知道连接是否成功,你应该添加覆盖方法:

@Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status,
                int newState)

这是链接。https://developer.android.com/guide/topics/connectivity/bluetooth-le.html

整个回调如下:

    private final BluetoothGattCallback mGattCallback =
            new BluetoothGattCallback() {
        @Override
        public void onConnectionStateChange(BluetoothGatt gatt, int status,
                int newState) {
            String intentAction;
            if (newState == BluetoothProfile.STATE_CONNECTED) {
                intentAction = ACTION_GATT_CONNECTED;
                mConnectionState = STATE_CONNECTED;
                broadcastUpdate(intentAction);
                Log.i(TAG, "Connected to GATT server.");
                Log.i(TAG, "Attempting to start service discovery:" +
                        mBluetoothGatt.discoverServices());

            } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
                intentAction = ACTION_GATT_DISCONNECTED;
                mConnectionState = STATE_DISCONNECTED;
                Log.i(TAG, "Disconnected from GATT server.");
                broadcastUpdate(intentAction);
            }
        }

        @Override
        // New services discovered
        public void onServicesDiscovered(BluetoothGatt gatt, int status) {
            if (status == BluetoothGatt.GATT_SUCCESS) {
                broadcastUpdate(ACTION_GATT_SERVICES_DISCOVERED);
            } else {
                Log.w(TAG, "onServicesDiscovered received: " + status);
            }
        }

        @Override
        // Result of a characteristic read operation
        public void onCharacteristicRead(BluetoothGatt gatt,
                BluetoothGattCharacteristic characteristic,
                int status) {
            if (status == BluetoothGatt.GATT_SUCCESS) {
                broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
            }
        }
     ...
    };
...
}