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