2015-12-19 10 views
5

最近、私は反応型プログラミングを学び始めました。私のアプリケーションでは、データを非同期に処理する多くのケースでrxandroidを使うようになっています。しかし、私はどのようにロケーションリスナーに適用するのか分からない。ユーザーの場所の変更を購読する方法はありますか?私に考えを与えてください。rxandroidを使ってGPS位置更新を聞く方法

答えて

8

LocationListenerを使用してオブザーバブルまたはサブジェクトを作成できます。onLocationChangedでコールバックを取得する場合は、ロケーションオブジェクトでonNextを呼び出すだけです。

public final class LocationProvider implements onLocationChanged { 
    private final PublishSubject<Location> latestLocation = PublishSubject.create(); 
    //... 
    @Override 
    public void onLocationChanged(Location location) { 
     latestLocation.onNext(location); 
    } 
} 

次に、ロケーションが必要なクラスで登録することができます。

あなたが使用できるいくつかのオープンソースのライブラリもありますAndroid-ReactiveLocationcgeo

また、Observable-based API and unsubscribe issue

は、この情報がお役に立てば幸い参照してください!

0

この素晴らしいライブラリの使用はどうですか? https://github.com/patloew/RxLocation

私はこれが最も簡単な方法

// Create one instance and share it 
RxLocation rxLocation = new RxLocation(context); 

LocationRequest locationRequest = LocationRequest.create() 
       .setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY) 
       .setInterval(5000); 

rxLocation.location().updates(locationRequest) 
     .flatMap(location -> rxLocation.geocoding().fromLocation(location).toObservable()) 
     .subscribe(address -> { 
      /* do something */ 
     }); 
であると信じて、あなたは場所の変更にサブスクライブする上記のライブラリーから、このスニペットを使用することができ build.gradle

compile 'com.patloew.rxlocation:rxlocation:1.0.4' 

にこれを追加

関連する問題