ribesg
03/04/2019, 1:23 PMBino
03/04/2019, 1:38 PMLifecycleObserver
this could be useful:https://github.com/thebino/LocationLifecycleObserver/blob/master/app/src/main/java/de/stuermerbenjamin/livedata/DeviceLocationObserver.ktribesg
03/04/2019, 1:51 PMBino
03/04/2019, 2:21 PMribesg
03/04/2019, 2:36 PMBino
03/04/2019, 2:43 PMlouiscad
03/04/2019, 10:33 PMimport android.Manifest
import android.location.Location
import androidx.annotation.RequiresPermission
import com.google.android.gms.location.LocationCallback
import com.google.android.gms.location.LocationRequest
import com.google.android.gms.location.LocationResult
import com.google.android.gms.location.LocationServices
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.tasks.await
import splitties.init.appCtx
import splitties.mainthread.mainLooper
@RequiresPermission(Manifest.permission.ACCESS_FINE_LOCATION)
suspend fun getCurrentLocation(): Location {
val request = LocationRequest().apply { numUpdates = 1; ... /* Put other config for your use case */ }
val locationClient = LocationServices.getFusedLocationProviderClient(appCtx)
val locationAsync = CompletableDeferred<Location>()
locationClient.requestLocationUpdates(request, object : LocationCallback() {
override fun onLocationResult(result: LocationResult) {
locationAsync.complete(result.lastLocation)
}
}, mainLooper).await()
return locationAsync.await()
}
Bino
03/05/2019, 8:33 AMlouiscad
03/05/2019, 8:43 AMLocationRequest
config. @ribesg Is this what you was looking for?ribesg
03/05/2019, 9:16 AMlouiscad
03/05/2019, 9:19 AMribesg
03/05/2019, 9:22 AMlouiscad
03/05/2019, 10:14 AMDialogFragment
to simplify it. Here's an example on how to do it with runtime permissions: https://github.com/LouisCAD/Splitties/blob/61a4035ba3b18270dbfb0828436b5045bff44919/sample/src/androidMain/kotlin/com/louiscad/splittiessample/preview/permissions/PermissionRequestDialogFragment.kt#L13 & https://github.com/LouisCAD/Splitties/blob/61a4035ba3b18270dbfb0828436b5045bff44919/sample/src/androidMain/kotlin/com/louiscad/splittiessample/preview/permissions/SuspendPermissionRequest.kt#L18-L35ribesg
03/05/2019, 10:16 AMDialogFragment
has onActivityResult
?louiscad
03/05/2019, 10:16 AMribesg
03/05/2019, 10:18 AMActivity
. An Activity
is required https://developers.google.com/android/reference/com/google/android/gms/common/api/ResolvableApiException#startResolutionForResult(android.app.Activity,%20int)louiscad
03/05/2019, 10:18 AMonActivityResult
in case the Activity was restarted, or the process was killed and restarted with the ActivitygetResolution()
instead, and start it from the Fragmentribesg
03/05/2019, 10:19 AMlouiscad
03/05/2019, 10:21 AMstartResoltuionForResult
just uses the PendingIntent
. A Fragment
has the same abilities thanks to its host `Activity`:
public final void startResolutionForResult(Activity var1, int var2) throws SendIntentException {
if (this.hasResolution()) {
var1.startIntentSenderForResult(this.zzi.getIntentSender(), var2, (Intent)null, 0, 0, 0);
}
}
ribesg
03/05/2019, 1:54 PMlouiscad
03/06/2019, 9:30 PMribesg
03/07/2019, 8:59 AM