2017-05-11 10 views
0

Rxプログラミングが初めてです。私は今、RxAndroidBleを使ってBLEデバイスのサービスを発見し、デバイスからいくつかの特性を読み取ろうとしています。RxAndroidBleを使用してサービスのディスカバリと読み取り特性を組み合わせる方法

私は特性

を望んでいた。しかし、私はそれが可能かどうかを知りたいのですが、デバイスサービスに

を見つけて読むために

device.establishConnection(false) 
    .flatMap(rxBleConnection -> rxBleConnection.readCharacteristic(characteristicUUID)); 

を使用する

device.establishConnection(false) 
    .flatMap(rxBleConnection -> rxBleConnection.discoverServices()); 

を使用することができますこれら2つのタスクを組み合わせることはできますか?可能であれば、どうすればいいですか?

あなたのヒントや助けてくれてありがとう!

答えて

0

ヘルパーメソッドreadCharacteristic(UUID)を使用しています。発見はまったくスキップすることができ、図書館はあなたのためにシームレスにそれを行います。

もちろん、zipでflatMapを使用するか、マージで公開してください。多くの方法がありますが、これは基本的で愚かなものです。

bleDevice 
    .establishConnection(false) 
    .flatMap(connection -> 
     Observable.zip(
      connection.readCharacteristic(UUID.randomUUID()).doOnNext(data -> doSomethingWithData(data)), 
      connection.discoverServices().doOnNext(services -> doSomethingWithServices(data)), 
      Pair::create 
     ) 
    ) 
     .subscribe(); 

RxJavaのトレーニングを受けることができたら最高です。

+0

返信いただきありがとうございます。しかし、私はまた、特性を読み取るだけでなく、サービスを発見したい、これを実現する方法はありますか? – wdxpz

+0

親切にお手伝いし、ご提案いただきありがとうございます!これは動作させるのに役立ちます! establishConnectionを使ってRxJava – wdxpz

+0

をさらに練習し、サービスを発見する必要があるときに、サービスを発見することができないことがあります。加入者のonError onCompletedは決して起こりません。プロセスは一定期間停止します。私は接続を確立するための時間を制限する方法があるのだろうかと思っていますか?どうもありがとう! – wdxpz

関連する問題