こんにちは私は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);
回答ありがとうございます!
? –
私はRx Conceptにはあまりよくありません。だから、私はアンドロイドサービスのキューを使用してすべてのデータを追加してから、このキューからデータを受け取って –
を送信して、最初の解決策を知りたいのですか? –