2015-12-19 22 views
5

Tôi bắt đầu học lập trình phản ứng những ngày này. Trong ứng dụng của tôi, tôi đã chuyển sang sử dụng rxandroid cho nhiều trường hợp xử lý dữ liệu một cách không đồng bộ. Nhưng tôi không biết cách áp dụng cho người nghe vị trí. Có cách nào để đăng ký thay đổi vị trí của người dùng không? Xin vui lòng cho tôi một ý tưởng.Cách sử dụng rxandroid để nghe bản cập nhật vị trí gps

Trả lời

8

Bạn có thể tạo Đài quan sát hoặc Chủ đề bằng cách sử dụng LocationListener và khi nhận được gọi lại trong onLocationChanged, chỉ cần gọi trênTiếp theo với đối tượng vị trí.

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

Sau đó, bạn có thể đăng ký nó trong lớp cần vị trí.

Ngoài ra còn có một số thư viện mã nguồn mở mà bạn có thể sử dụng: Android-ReactiveLocationcgeo

Ngoài ra, xem Observable-based API and unsubscribe issue

Hope this helps!

0

Cách sử dụng thư viện tuyệt vời này? https://github.com/patloew/RxLocation

thêm video này vào build.gradle

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

bạn có thể sử dụng đoạn mã này từ thư viện nêu trên để đăng ký vào những thay đổi vị trí, tôi tin rằng đây là cách đơn giản nhất

// 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 */ 
     }); 
Các vấn đề liên quan