問題タブ [rxandroidble]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
rx-java - PublishSubject を使用した RxBleConnection が接続を解放しない
アプリには、周辺機器で実行する BLE 操作のキューが事実上あります。各操作は、ペリフェラルへの接続を確立することから始まります。ペリフェラルは を返しますObservable<RxBleConnection>
。キュー内の最初のアイテムが接続を開始し、後続の操作はこれ (shared) を受け取るだけRxBleConnection
です。
簡単に言えば、キューは次の方法で実行されます。
接続を確立できない場合、または 1 つの操作中に切断された場合、残りのキューに入れられた操作はそれぞれ再試行され、接続の再確立が試みられます。
RxBleConnection
接続が無効になると、キューに入れられた操作が新しい接続を再確立するのではなく、常に無効になったものを受け取るように動作を変更することにしました。再試行ロジックは引き続き実行されますが、これらのインスタンスではすぐに失敗します --- 接続とは関係なく、操作が失敗する可能性がある他の理由があります。
この動作を生成するために、 の直後に を構成しPublishSubject
ますObservable<RxBleConnection>
。このサブジェクトは元のサブジェクトを委任するだけですRxBleConnection
--- 以下のコードを参照してください。接続がエラー状態に達すると、サブジェクトへの後続のサブスクリプションでエラーが発生します。それ以外の場合は、共有接続が返されます。これはまさに私が望んでいた動作であり、エラーが発生したときに設計どおりに動作するように見えます。ただし、すべてが成功すると、現在問題が発生しています。
変更前は、キュー内のすべての操作が消費されると、接続が自動的に解放されました。ただし、を追加するとPublishSubject
、操作は成功しますが、接続は開いたままになります。デバッグ ステートメントを使用して、サブジェクトのonUnsubscribe
andonTerminate
が呼び出されないことを確認しました。オリジナルRxBleConnection
は最終的にタイムアウトになります --- そしてそのonUnsubscribe
とonTerminate
が呼び出されます。
アプリが周辺機器に接続されたままになっている原因は、私が間違って何をしているのか疑問に思っていました.
android - BleGattException ステータス リターン 133 (onClientConnectionState() - status=133)
通知を開こうとした後にbleに接続すると、しばしばBleGattException status = 133が返され、時々開かないことがあります。
これは私のコードです:
connectFail は BleGattException ステータスを返します = 133
これは私のコメントの背後にある印刷ログ // です:</p>
mConnectingDevice. EstablishConnection(false)
接続ステータス 133
接続失敗ガットが近い
引き続き接続を試みます。
再度接続できませんでした! 解決策はありますか?接続ステータスが 133 の理由がわからない、gatt がクローズされました! 今、この状態が頻繁に発生します。助けてください。
rxandroidble - RxAndroidBle ですべての通知を受け取る方法
AndroidフォンとAndroid Thingsを使用したRaspberry Piの両方で実行されているrxBleAndroidを使用して、BLEデータロガー/センサーと通信しようとしています。
ただし、現在、最初の通知の約 5 件までがアプリで受信されないという問題があります。
BLE デバイスが実際に期待されるすべての通知を正常に送信していることを確認しました。私は nRF Connect アプリを介してそれを行いましたが、そこではすべてが期待どおりに機能します。
nRF Connect アプリを使用して行うときは、次の手順を実行します。
- デバイスのロックを解除するためのパスワード特性への書き込み
- デバイスを正しいモードにするためのモード特性への書き込み
- 通知を購読する (通知はすぐに機能し始めます)
RxAndroidBle を介して行う場合、.subscribe() のセットアップが十分に高速ではない可能性があると思われます。
setupNotification() を実行し、デバイスに通知の送信を開始するように指示する特性を書き込む方法はありますか?
これが私の現在のコードです: