Ho iniziato a imparare la programmazione reattiva in questi giorni. Nella mia applicazione, ho deciso di utilizzare rxandroid per molti casi che elaborano i dati in modo asincrono. Ma non so come applicare all'ascoltatore di posizione. C'è un modo per sottoscrivere la modifica della posizione dell'utente? Per favore dammi un'idea.Come utilizzare rxandroid per ascoltare l'aggiornamento della posizione GPS
5
A
risposta
8
È possibile creare oggetti osservabili o Oggetto utilizzando LocationListener
e quando si riceve la prenotazione nello onLocationChanged
, è sufficiente chiamare suNext con l'oggetto posizione.
public final class LocationProvider implements onLocationChanged {
private final PublishSubject<Location> latestLocation = PublishSubject.create();
//...
@Override
public void onLocationChanged(Location location) {
latestLocation.onNext(location);
}
}
Quindi è possibile iscriversi ad esso in una classe che necessita di posizione.
ci sono anche alcune librerie open source che è possibile utilizzare: Android-ReactiveLocation e cgeo
Inoltre, vedere Observable-based API and unsubscribe issue
Spero che questo aiuti!
0
Che ne dici di utilizzare questa fantastica libreria? https://github.com/patloew/RxLocation
aggiungere questo al build.gradle
compile 'com.patloew.rxlocation:rxlocation:1.0.4'
è possibile utilizzare questo frammento dalla libreria di cui sopra per la sottoscrizione sui cambiamenti di posizione, credo che questo sia il modo più semplice
// 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 */
});
Problemi correlati
- 1. Come ottenere la posizione GPS per Android
- 2. Utilizzare la pianificazione con RxAndroid
- 3. posizione corrente gps android
- 4. Città per posizione GPS Latitudine/Longitudine
- 5. RxAndroid: quando utilizzare bindActivity e perché?
- 6. Come utilizzare al meglio i dati GPS?
- 7. GPS Android ottiene posizione corrente
- 8. Abilita GPS programmaticamente Android (senza accedere alle impostazioni della posizione)
- 9. Localizzazione della posizione corrente in Android senza GPS
- 10. Posso ottenere la precisione della posizione GPS in iOS?
- 11. Come posso utilizzare un adattatore JMS per ascoltare Amazon SQS
- 12. Posizione: Autorizzazioni GPS/rete: disponibile se disponibile
- 13. Guida della bussola alla destinazione GPS
- 14. algoritmo/teoria per la rimozione del jitter di posizione GPS
- 15. "GPS" fornitore di posizione richiede l'autorizzazione ACCESS_FINE_LOCATION per Android 6.0
- 16. Ottieni posizione GPS dal browser web
- 17. Come ottenere timestamp accurati dalla posizione GPS Android
- 18. Come ascoltare le modifiche dei dati in più di una posizione particolare in Firebase?
- 19. È necessario che l'attività di Android attenda fino al raggiungimento della posizione GPS
- 20. Come trovare periodicamente la posizione GPS in Android
- 21. Proguard e RxAndroid V1.1.0
- 22. Come ascoltare una porta TCP usando PHP?
- 23. Converti AsyncTask in RxAndroid
- 24. iPhone GPS - Drenaggio della batteria estremamente veloce
- 25. Android: getLastKnownLocation non aggiornato - come forzare l'aggiornamento della posizione?
- 26. rete intercambiabile e fornitori di localizzazione GPS in base allo stato gps android
- 27. Posizione GPS più precisa di un dispositivo mobile
- 28. Ottieni * posizione grossolana * dal provider GPS su Android
- 29. Come posso impedire all'utente di attendere a lungo per ottenere una correzione della posizione?
- 30. MyLocationOverlay o LocationManager per l'aggiornamento della posizione corrente