Add another way to get location

This commit is contained in:
TiclemFR
2024-07-04 10:06:38 +02:00
parent 367be18e85
commit 0b288973ca

View File

@@ -9,13 +9,11 @@ import android.location.Location
import android.location.LocationManager
import android.net.Uri
import android.os.Bundle
import android.os.Looper
import android.preference.PreferenceManager
import android.provider.BaseColumns
import android.util.Log
import android.view.WindowManager
import android.widget.Button
import android.widget.TextView
import androidx.activity.ComponentActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
@@ -23,9 +21,6 @@ import com.example.busroute.Database.DbHelper
import com.example.busroute.Database.StopContract
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 com.google.android.gms.location.Priority
import org.osmdroid.api.IMapController
import org.osmdroid.config.Configuration.getInstance
import org.osmdroid.tileprovider.tilesource.TileSourceFactory
@@ -35,6 +30,8 @@ import org.osmdroid.views.overlay.Marker
import org.osmdroid.views.overlay.compass.CompassOverlay
import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider
import org.osmdroid.views.overlay.gestures.RotationGestureOverlay
import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider
import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay
class MainActivity : ComponentActivity() {
@@ -143,45 +140,49 @@ class MainActivity : ComponentActivity() {
val compassOverlay = CompassOverlay(this, InternalCompassOrientationProvider(this), map)
compassOverlay.enableCompass()
map.overlays.add(compassOverlay)
val mLocationOverlay = MyLocationNewOverlay(GpsMyLocationProvider(this), this.map)
mLocationOverlay.enableMyLocation()
mLocationOverlay.enableFollowLocation()
map.overlays.add(mLocationOverlay)
isLocationPermissionGranted()
val locationClient = LocationServices.getFusedLocationProviderClient(this)
locationRequest = LocationRequest.Builder(Priority.PRIORITY_BALANCED_POWER_ACCURACY,60)
.setWaitForAccurateLocation(true).setMaxUpdateAgeMillis(30).build()
locationCallback = object : LocationCallback() {
@SuppressLint("SetTextI18n")
override fun onLocationResult(locationResult: LocationResult) {
locationResult ?: return
for (location in locationResult.locations){
if(location.accuracy < 60){
if(location.provider == LocationManager.NETWORK_PROVIDER){
location.provider = LocationManager.GPS_PROVIDER
}else{
location.provider = LocationManager.NETWORK_PROVIDER
}
}
currentLocation = location
latitude = location.latitude
longitude = location.longitude
mapController.animateTo(GeoPoint(latitude, longitude))
positionMarker.position = GeoPoint(latitude, longitude)
positionMarker.title = "You"
map.overlays.add(positionMarker)
map.invalidate()
findViewById<TextView>(R.id.accuracy).text = "${location.accuracy} %"
findViewById<TextView>(R.id.position).text = "$latitude $longitude"
findViewById<TextView>(R.id.speed).text = "${location.speed} m/s"
findViewById<TextView>(R.id.speed_accuracy).text = "${location.speedAccuracyMetersPerSecond} %"
Log.i("Position", "$latitude $longitude")
Log.i("Accuracy Chosen", "${location.accuracy}")
}
}
}
locationClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper())
// val locationClient = LocationServices.getFusedLocationProviderClient(this)
//
// locationRequest = LocationRequest.Builder(Priority.PRIORITY_BALANCED_POWER_ACCURACY,60)
// .setWaitForAccurateLocation(true).setMaxUpdateAgeMillis(30).build()
// locationCallback = object : LocationCallback() {
// @SuppressLint("SetTextI18n")
// override fun onLocationResult(locationResult: LocationResult) {
// locationResult ?: return
// for (location in locationResult.locations){
// if(location.accuracy < 60){
// if(location.provider == LocationManager.NETWORK_PROVIDER){
// location.provider = LocationManager.GPS_PROVIDER
// }else{
// location.provider = LocationManager.NETWORK_PROVIDER
// }
// }
// currentLocation = location
// latitude = location.latitude
// longitude = location.longitude
// mapController.animateTo(GeoPoint(latitude, longitude))
//
// positionMarker.position = GeoPoint(latitude, longitude)
// positionMarker.title = "You"
// map.overlays.add(positionMarker)
// map.invalidate()
//
// findViewById<TextView>(R.id.accuracy).text = "${location.accuracy} %"
// findViewById<TextView>(R.id.position).text = "$latitude $longitude"
// findViewById<TextView>(R.id.speed).text = "${location.speed} m/s"
// findViewById<TextView>(R.id.speed_accuracy).text = "${location.speedAccuracyMetersPerSecond} %"
//
// Log.i("Position", "$latitude $longitude")
// Log.i("Accuracy Chosen", "${location.accuracy}")
// }
// }
// }
// locationClient.requestLocationUpdates(locationRequest, locationCallback, Looper.getMainLooper())
}
private fun isLocationPermissionGranted(): Boolean {