move config logic from location manager to keep it lazy

This commit is contained in:
fatih ergin
2023-07-24 22:51:32 +03:00
parent 90c6b3193b
commit b64d5374f6
3 changed files with 20 additions and 22 deletions

View File

@ -6,9 +6,7 @@ import android.location.LocationListener
import android.location.LocationManager import android.location.LocationManager
import androidx.annotation.RequiresPermission import androidx.annotation.RequiresPermission
import com.simplemobiletools.camera.extensions.checkLocationPermission import com.simplemobiletools.camera.extensions.checkLocationPermission
import com.simplemobiletools.camera.extensions.config
import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.activities.BaseSimpleActivity
import com.simplemobiletools.commons.helpers.PERMISSION_ACCESS_FINE_LOCATION
class SimpleLocationManager(private val activity: BaseSimpleActivity) { class SimpleLocationManager(private val activity: BaseSimpleActivity) {
@ -47,24 +45,8 @@ class SimpleLocationManager(private val activity: BaseSimpleActivity) {
} }
} }
fun requestLocationUpdates() {
activity.apply {
if (checkLocationPermission()) {
registerLocationUpdateListener()
} else {
handlePermission(PERMISSION_ACCESS_FINE_LOCATION) { _ ->
if (checkLocationPermission()) {
registerLocationUpdateListener()
} else {
config.saveMediaLocation = false
}
}
}
}
}
@RequiresPermission(anyOf = [Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION]) @RequiresPermission(anyOf = [Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION])
private fun registerLocationUpdateListener() { fun requestLocationUpdates() {
locationManager.allProviders.forEach { provider -> locationManager.allProviders.forEach { provider ->
locationManager.requestLocationUpdates( locationManager.requestLocationUpdates(
provider, provider,

View File

@ -2,12 +2,12 @@ package com.simplemobiletools.camera.implementations
import android.net.Uri import android.net.Uri
import androidx.camera.view.PreviewView import androidx.camera.view.PreviewView
import com.simplemobiletools.camera.activities.MainActivity
import com.simplemobiletools.camera.helpers.CameraErrorHandler import com.simplemobiletools.camera.helpers.CameraErrorHandler
import com.simplemobiletools.camera.helpers.MediaOutputHelper import com.simplemobiletools.camera.helpers.MediaOutputHelper
import com.simplemobiletools.camera.helpers.MediaSoundHelper import com.simplemobiletools.camera.helpers.MediaSoundHelper
import com.simplemobiletools.commons.activities.BaseSimpleActivity
class CameraXInitializer(private val activity: MainActivity) { class CameraXInitializer(private val activity: BaseSimpleActivity) {
fun createCameraXPreview( fun createCameraXPreview(
previewView: PreviewView, previewView: PreviewView,

View File

@ -358,7 +358,23 @@ class CameraXPreview(
if (simpleLocationManager == null) { if (simpleLocationManager == null) {
simpleLocationManager = SimpleLocationManager(activity) simpleLocationManager = SimpleLocationManager(activity)
} }
requestLocationUpdates()
}
}
private fun requestLocationUpdates() {
activity.apply {
if (checkLocationPermission()) {
simpleLocationManager?.requestLocationUpdates() simpleLocationManager?.requestLocationUpdates()
} else {
handlePermission(PERMISSION_ACCESS_FINE_LOCATION) { _ ->
if (checkLocationPermission()) {
simpleLocationManager?.requestLocationUpdates()
} else {
config.savePhotoVideoLocation = false
}
}
}
} }
} }