Android BLE:onCharacteristicChanged回调的服务器端更改?

时间:2016-12-27 06:17:50

标签: android ios bluetooth bluetooth-lowenergy

我有一个ios应用程序,我正在与医疗设备进行BLE通信。我正在创建同一个应用程序的Android版本。

在我用于实现与该医疗设备进行BLE通信的Android应用程序中,我编写了以下gatt回调:

private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
        super.onConnectionStateChange(gatt, status, newState);
        switch (newState) {
            case BluetoothProfile.STATE_CONNECTED:
                Log.d(TAG, "Connected");
                gatt.discoverServices();
                break;
            case BluetoothProfile.STATE_DISCONNECTED:
                Log.d(TAG, "Disconnected");
                break;
            default:
                Log.d(TAG, "State Other");
                break;
        }
    }

    @Override
    public void onServicesDiscovered(BluetoothGatt gatt, int status) {
        super.onServicesDiscovered(gatt, status);
        Log.d(TAG, "onServicesDiscovered");
        BluetoothGattCharacteristic mCharacteristic = gatt.getService(SNORECOACH_SERVICE_UUID).getCharacteristic(BODY_MOVEMENT_UUID);
        if ( mCharacteristic.getUuid().equals(BODY_MOVEMENT_UUID)) {
            Log.d(TAG, "Characteristic Found");
        }
        mBluetoothGatt.setCharacteristicNotification(mCharacteristic, true);
        BluetoothGattDescriptor descriptor = mCharacteristic.getDescriptor(CLIENT_CHARACTERISTIC_CONFIG_UUID);
        if (descriptor.getUuid().equals(CLIENT_CHARACTERISTIC_CONFIG_UUID)) {
            Log.d(TAG, "Descriptor Found");
        }
        descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);
        mBluetoothGatt.writeDescriptor(descriptor);
    }

    @Override
    public void onCharacteristicRead(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
        super.onCharacteristicRead(gatt, characteristic, status);
        Log.d(TAG, "onCharacteristicRead");
    }

    @Override
    public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
        super.onCharacteristicWrite(gatt, characteristic, status);
        Log.d(TAG, "onCharacteristicWrite");
    }

    @Override
    public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
        super.onCharacteristicChanged(gatt, characteristic);
        Log.d(TAG, "onCharacteristicChanged");
    }

    @Override
    public void onDescriptorRead(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
        super.onDescriptorRead(gatt, descriptor, status);
        Log.d(TAG, "onDescriptorRead");
    }

    @Override
    public void onDescriptorWrite(BluetoothGatt gatt, BluetoothGattDescriptor descriptor, int status) {
        super.onDescriptorWrite(gatt, descriptor, status);
        Log.d(TAG, "onDescriptorWrite");
    }
};

除了onCharacteristicChange回调之外,配对,取消配对,读写特性等所有操作都正常工作。

我在以下链接中尝试了所有可能的选项

1)https://developer.android.com/guide/topics/connectivity/bluetooth-le.html

2)http://www.truiton.com/2015/04/android-bluetooth-low-energy-ble-example/

3)http://toastdroid.com/2014/09/22/android-bluetooth-low-energy-tutorial/

以及更多其他链接。

但onCharacteristicChanged没有被调用。我已经尝试了超过5天,但没有运气。

但是在ios app中,相当于onCharacteristicChanged的回调被正确调用。

我想知道的是 - 任何特定于Android的编码/实现(即任何服务器端实现)我必须在该设备中执行,以便它可以发送特征更改通知,我可以在onCharacteristicChanged回调中接收。 / p>

0 个答案:

没有答案