Slide 21
Slide 21 text
Location Updates
class FusedLocationWrapperImpl(
private val client: FusedLocationProviderClient
) : FusedLocationWrapper {
. . .
override fun lastKnownLocation(): Single = . . .
@SuppressLint("MissingPermission")
@MainThread
override fun locationUpdates(): Observable =
Observable.create { emitter ->
val request = LocationRequest().apply {
interval = 1_000
fastestInterval = 500
priority = LocationRequest.PRIORITY_HIGH_ACCURACY
}
val callback = object : LocationCallback() {
override fun onLocationResult(location: LocationResult?) {
location?.lastLocation?.let {
emitter.onNext(it.latitude to it.longitude)
}
}
}
client.requestLocationUpdates(request, callback, Looper.myLooper())
emitter.setCancellable { client.removeLocationUpdates(callback) }
}.subscribeOn(AndroidSchedulers.mainThread())