Loading play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/SourceLocationEngine.kt +16 −4 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ import android.app.PendingIntent import android.location.Location import android.os.Handler import android.os.Looper import android.util.Log import com.google.android.gms.maps.internal.ILocationSourceDelegate import com.google.android.gms.maps.internal.IOnLocationChangeListener import com.mapbox.mapboxsdk.location.engine.LocationEngine Loading @@ -19,6 +20,7 @@ import com.mapbox.mapboxsdk.location.engine.LocationEngineResult class SourceLocationEngine(private val locationSource: ILocationSourceDelegate) : LocationEngine, IOnLocationChangeListener.Stub() { val callbacks: MutableSet<Pair<LocationEngineCallback<LocationEngineResult>, Handler>> = hashSetOf() var lastLocation: Location? = null var active: Boolean = false override fun getLastLocation(callback: LocationEngineCallback<LocationEngineResult>) { callback.onSuccess(LocationEngineResult.create(lastLocation)) Loading @@ -26,8 +28,13 @@ class SourceLocationEngine(private val locationSource: ILocationSourceDelegate) override fun requestLocationUpdates(request: LocationEngineRequest, callback: LocationEngineCallback<LocationEngineResult>, looper: Looper?) { callbacks.add(callback to Handler(looper ?: Looper.myLooper() ?: Looper.getMainLooper())) if (callbacks.size == 1) { if (!active) { active = true try { locationSource.activate(this) } catch (e: Exception) { Log.w(TAG, e) } } } Loading @@ -37,8 +44,13 @@ class SourceLocationEngine(private val locationSource: ILocationSourceDelegate) override fun removeLocationUpdates(callback: LocationEngineCallback<LocationEngineResult>) { callbacks.removeAll { it.first == callback } if (callbacks.isEmpty()) { if (callbacks.isEmpty() && active) { active = false try { locationSource.deactivate() } catch (e: Exception) { Log.w(TAG, e) } } } Loading Loading
play-services-maps-core-mapbox/src/main/kotlin/org/microg/gms/maps/mapbox/SourceLocationEngine.kt +16 −4 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ import android.app.PendingIntent import android.location.Location import android.os.Handler import android.os.Looper import android.util.Log import com.google.android.gms.maps.internal.ILocationSourceDelegate import com.google.android.gms.maps.internal.IOnLocationChangeListener import com.mapbox.mapboxsdk.location.engine.LocationEngine Loading @@ -19,6 +20,7 @@ import com.mapbox.mapboxsdk.location.engine.LocationEngineResult class SourceLocationEngine(private val locationSource: ILocationSourceDelegate) : LocationEngine, IOnLocationChangeListener.Stub() { val callbacks: MutableSet<Pair<LocationEngineCallback<LocationEngineResult>, Handler>> = hashSetOf() var lastLocation: Location? = null var active: Boolean = false override fun getLastLocation(callback: LocationEngineCallback<LocationEngineResult>) { callback.onSuccess(LocationEngineResult.create(lastLocation)) Loading @@ -26,8 +28,13 @@ class SourceLocationEngine(private val locationSource: ILocationSourceDelegate) override fun requestLocationUpdates(request: LocationEngineRequest, callback: LocationEngineCallback<LocationEngineResult>, looper: Looper?) { callbacks.add(callback to Handler(looper ?: Looper.myLooper() ?: Looper.getMainLooper())) if (callbacks.size == 1) { if (!active) { active = true try { locationSource.activate(this) } catch (e: Exception) { Log.w(TAG, e) } } } Loading @@ -37,8 +44,13 @@ class SourceLocationEngine(private val locationSource: ILocationSourceDelegate) override fun removeLocationUpdates(callback: LocationEngineCallback<LocationEngineResult>) { callbacks.removeAll { it.first == callback } if (callbacks.isEmpty()) { if (callbacks.isEmpty() && active) { active = false try { locationSource.deactivate() } catch (e: Exception) { Log.w(TAG, e) } } } Loading