From 220f13d22a043d024b18e5232f96681eca02ac97 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Sun, 16 Feb 2020 17:56:04 +0000 Subject: [PATCH] Switched to android.location api, removed google play services dependency --- app/build.gradle | 3 --- .../java/com/rtbishop/look4sat/MainViewModel.kt | 14 +++++++++----- .../java/com/rtbishop/look4sat/di/AndroidModule.kt | 7 +++---- .../java/com/rtbishop/look4sat/ui/MainActivity.kt | 4 ++-- build.gradle | 2 -- 5 files changed, 14 insertions(+), 16 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f865430b..1df47446 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -85,7 +85,4 @@ dependencies { // predict4java implementation "com.github.davidmoten:predict4java:$predict4java" - - // location - implementation "com.google.android.gms:play-services-location:$google_play" } diff --git a/app/src/main/java/com/rtbishop/look4sat/MainViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/MainViewModel.kt index fe368ebe..18bb274b 100644 --- a/app/src/main/java/com/rtbishop/look4sat/MainViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/MainViewModel.kt @@ -22,7 +22,7 @@ package com.rtbishop.look4sat import android.app.Application import android.content.Context import android.content.SharedPreferences -import android.location.Location +import android.location.LocationManager import android.util.Log import androidx.core.content.edit import androidx.lifecycle.AndroidViewModel @@ -32,7 +32,6 @@ import androidx.lifecycle.viewModelScope import com.github.amsacode.predict4java.GroundStationPosition import com.github.amsacode.predict4java.SatNotFoundException import com.github.amsacode.predict4java.TLE -import com.google.android.gms.location.FusedLocationProviderClient import com.rtbishop.look4sat.predict4kotlin.PassPredictor import com.rtbishop.look4sat.repo.Repository import com.rtbishop.look4sat.repo.SatPass @@ -79,7 +78,7 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { private var calculationJob: Job? = null @Inject - lateinit var locationClient: FusedLocationProviderClient + lateinit var locationManager: LocationManager @Inject lateinit var preferences: SharedPreferences @Inject @@ -109,8 +108,11 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { _gsp.postValue(GroundStationPosition(lat, lon, alt)) } - fun getCurrentLocation() { - locationClient.lastLocation.addOnSuccessListener { location: Location? -> + fun updateLocation() { + val passiveProvider = LocationManager.PASSIVE_PROVIDER + try { + val location = locationManager.getLastKnownLocation(passiveProvider) + val lat = location?.latitude ?: 0.0 val lon = location?.longitude ?: 0.0 val alt = location?.altitude ?: 0.0 @@ -123,6 +125,8 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { } _gsp.postValue(GroundStationPosition(lat, lon, alt)) _debugMessage.postValue(app.getString(R.string.update_loc_success)) + } catch (e: SecurityException) { + _debugMessage.postValue(app.getString(R.string.err_no_permissions)) } } diff --git a/app/src/main/java/com/rtbishop/look4sat/di/AndroidModule.kt b/app/src/main/java/com/rtbishop/look4sat/di/AndroidModule.kt index a6ccd1b9..fc2d4639 100644 --- a/app/src/main/java/com/rtbishop/look4sat/di/AndroidModule.kt +++ b/app/src/main/java/com/rtbishop/look4sat/di/AndroidModule.kt @@ -21,9 +21,8 @@ package com.rtbishop.look4sat.di import android.content.Context import android.content.SharedPreferences +import android.location.LocationManager import androidx.preference.PreferenceManager -import com.google.android.gms.location.FusedLocationProviderClient -import com.google.android.gms.location.LocationServices import dagger.Module import dagger.Provides import javax.inject.Singleton @@ -39,7 +38,7 @@ class AndroidModule { @Singleton @Provides - fun provideLocationClient(context: Context): FusedLocationProviderClient { - return LocationServices.getFusedLocationProviderClient(context) + fun provideLocationManager(context: Context): LocationManager { + return context.getSystemService(Context.LOCATION_SERVICE) as LocationManager } } \ No newline at end of file diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt index 156d9253..ed765708 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/MainActivity.kt @@ -169,7 +169,7 @@ class MainActivity : AppCompatActivity() { ActivityCompat.requestPermissions(this, arrayOf(permLocation), permLocationCode) } } else { - viewModel.getCurrentLocation() + viewModel.updateLocation() } } @@ -177,7 +177,7 @@ class MainActivity : AppCompatActivity() { when (reqCode) { permLocationCode -> { if (res.isNotEmpty() && res[0] == permGranted) { - viewModel.getCurrentLocation() + viewModel.updateLocation() } } } diff --git a/build.gradle b/build.gradle index bc9c0c16..4a87d80b 100644 --- a/build.gradle +++ b/build.gradle @@ -61,6 +61,4 @@ ext { dagger = '2.25.2' predict4java = '1.3.1' - - google_play = '17.0.0' }