2016-08-25 14 views
0

こんにちは私はRxJavaとBLEで最初のアプリケーションを構築しようとしています。私は質問をしています。私はシングルトンクラス(コネクション、通知などに使用します)でwite(バイトb)メソッドを作成しました。だから今私はこのメソッドを呼び出すBLEデバイスにデータを書きたい場合。私はコードのさまざまな部分から多くを行う必要があります。私はRxJavaのコンセプトにはとても新しいので、間違っているような気がします。 現在のソリューション:RxAndroidBle正しくデバイスに書き込む方法は?

public void write(byte[] b) { 

     if (isConnected()) { 
      connectionObservable 
        .flatMap(rxBleConnection -> rxBleConnection.writeCharacteristic(characteristicUuid, b)) 
        .subscribe(bytes -> { 
         onWriteSuccess(bytes); 
        }, this::onWriteFailure); 
     } 

    } 

私はそのような何かをする必要があるように私は感じるが、私は知っているどのようにいけない:

protected static final BlockingQueue<byte[]> TxQueue = new ArrayBlockingQueue<>(32); 

public void write(byte[] b) { 

     TxQueue.add(bytes); 

    } 

やデバイスへの接続時に一度だけこれを呼び出す:

connectionObservable 
        .flatMap(rxBleConnection ->  rxBleConnection.writeCharacteristic(characteristicUuid, TxQueue.take)) 
        .subscribe(bytes -> { 
         onWriteSuccess(bytes); 
        }, this::onWriteFailure); 

回答ありがとうございます!

+0

? –

+0

私はRx Conceptにはあまりよくありません。だから、私はアンドロイドサービスのキューを使用してすべてのデータを追加してから、このキューからデータを受け取って –

+0

を送信して、最初の解決策を知りたいのですか? –

答えて

0

あなたの最初のソリューションはうまくいきます。

RxAndroidBleライブラリはコマンドのキューイングを処理しているため、実行する必要があるのはsubscribe()からRxBleConnection.writeCharacteristic()です。

もすでにStackOverflowの上で同様の質問があります:あなたがのために `TxQueue`をしたいですかなぜ RxAndroidBle keeping a persistant connection + Write/Notification handling

よろしく

+0

ありがとう、愚かな質問を申し訳ありません! –

関連する問題