0

フレームワークで既存のアプリをアップグレードしようとしています。接続/読み取り/書き込みなどの他の機能は正常に機能していますが、通知/切断の問題に直面しています

次のシナリオのガイドをお願いします:-

  1. 切断するにはコールバックが必要
  2. 通知が機能しない 通知アラートを受け取ることができません
  3. さまざまなデバイスがあり、一部の特性がすべてのデバイスに存在しないため、デバイスの特性を確認する方法はありますか?デバイスに存在しない特性を読み書きしようとすると、例外がスローされ、アプリがクラッシュします

コード:-

connection.writeDescriptor(
    Defs.SVC_AUTOMATIONIO_UUID, 
    Defs.CHAR_AUTOMATION_IO,
    Defs.DESC_CLIENT_CHAR_CONFIGURATION_UUID,
    BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE
)
    .subscribe(
        this::onWriteSuccess,
        this::onWriteFailure
    );

connection.setupNotification(iCharUuid)
    .flatMap(notificationObservable -> notificationObservable)
    .subscribe(
        this::onNotificationReceived,
        this::onConnectionFailure
    );

ありがとうスワヤム

4

1 に答える 1

0

通常、通知を有効にするために記述子を手動で記述する必要はありません。図書館があなたに代わってそれを行います。

試してください: (例)

rxBleConnection.setupNotification(Defs.DESC_CLIENT_CHAR_CONFIGURATION_UUID)
                    .flatMap(notificationObservable -> notificationObservable)
                    .subscribe(this::onNotificationReceived, this::onNotificationSetupFailure);

切断時のコールバックを取得するには:(例)

  1. establishConnectionメソッドから onError を観察できます。
  2. 接続ステータスを監視可能に設定できます

bleDevice.observeConnectionStateChanges().subscribe(this::onConnectionStateChange);

特性を確認するには、サービス ディスカバリを使用できます: (例)

 bleDevice.establishConnection(this, false)
                .flatMap(RxBleConnection::discoverServices)
                .first() // Disconnect automatically after discovery
                .subscribe(this::processDiscoveredServices, this::onConnectionFailure);
于 2016-07-26T09:00:38.707 に答える