1

iOS および Android 7.0 の特定のサービス/特性 UUID で正常に動作する BLE 周辺機器があります。Android 6.0 Marshmallow では、記述子に ENABLE_NOTIFICATION_VALUE を設定しても、onCharacteristicChanged メソッドは起動しません。Android OS 6.0 Marshmallow を実行している Android デバイスで onCharacteristicChanged を起動する方法を教えてください。通知を機能させるために使用しているコードは次のとおりです。

    boolean success = mBluetoothGatt.setCharacteristicNotification(characteristic, true);
    Log.e(TAG, "set char notification = " + (success ? "It worked :)" : "It did not work :("));

    if (UUID_DATA_PACKET.equals(characteristic.getUuid())) {
        BluetoothGattDescriptor descriptor = characteristic.getDescriptor(
                UUID.fromString(EkoCoreGattAttributes.CLIENT_CHARACTERISTIC_CONFIG));

        descriptor.setValue(BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE);

        success = mBluetoothGatt.writeDescriptor(descriptor);
        Log.e(TAG, "set descriptor = " + descriptor.getCharacteristic().getWriteType() + ", success = " + (success ? "It worked :)" : "It did not work :("));
    }

上記のコードでは、setCharacteristicNotification 呼び出しと writeDescriptor 呼び出しの両方が成功を返します (1 / true / など)。さらに、onDescriptorWrite コールバックは GATT_SUCCESS を返します。ただし、コードの後半で記述子を読み取ると、通知値がまだ無効に設定されていることがわかります。setCharacteristicNotification 呼び出しと writeDescriptor 呼び出しの間に遅延を置くなど、多くの解決策を試しましたが、この問題の解決策は見つかりませんでした。問題の周辺機器とのペアリングは問題ありませんが、通知を取得することはどういうわけか不可能のようです. ヒントをいただければ幸いです。

4

1 に答える 1