我最近開始學習反應式編程。在我的應用程序中,我轉向使用rxandroid來處理異步數據的很多情況。但我不知道如何應用到位置監聽器。有什麼方法可以訂閱用戶位置更改?請給我一個主意。如何使用rxandroid來收聽GPS位置更新
5
A
回答
8
您可以使用LocationListener
創建Observables或Subject,並且在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-ReactiveLocation和cgeo
而且,看到Observable-based API and unsubscribe issue
希望這有助於!
0
如何使用這個真棒圖書館? https://github.com/patloew/RxLocation
它添加到build.gradle
compile 'com.patloew.rxlocation:rxlocation:1.0.4'
您可以使用此代碼段從上面提到的圖書館訂閱的位置變化,我相信這是最簡單的方法
// 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 */
});
相關問題
- 1. 安卓:繼續收聽位置更新
- 2. 使用Android GPS進行位置更新?
- 3. 如何頻繁更新GPS位置?
- 4. GPS位置不會更新
- 5. Android GPS位置更新
- 6. 自動更新GPS位置
- 7. 如何在MainActivity.java中偵聽GPS更新並接收值?
- 8. 即使使用融合位置API關閉gps,如何獲取位置更新?
- 9. Android GPS位置監聽器
- 10. 啓用GPS後更新位置視圖
- 11. 我做了gps位置偵聽器,但我的位置更新需要權限?
- 12. 如何偵聽來自多個提供者的位置更新?
- 13. 位置使用Gps
- 14. 使用GPS位置
- 15. 如何頻繁更新用戶的gps位置
- 16. 如何用實時GPS座標更新標記的位置?
- 17. 如何使用RxAndroid
- 18. 如何使用GPS確定位置?
- 19. 如何使用AsyncTask獲取GPS位置?
- 20. GPS沒有獲取位置更新
- 21. 從GPS獲取每個位置更新
- 22. android:listen *被動地* gps位置更新
- 23. Galaxy S3上沒有GPS位置更新
- 24. Android - 註冊後GPS位置不更新
- 25. CLLocationmanager中的GPS位置更新
- 26. 使用iPhone GPS無需互聯網更新用戶位置
- 27. Gps位置監聽器停止
- 28. 收聽GPS狀態變化
- 29. Android的定位服務(GPS):不接收位置更新,如果GPS已經開啓
- 30. 如何獲得GPS位置一次,而沒有自動更新?