diff --git a/app/src/main/java/com/example/busroute/MainActivity.kt b/app/src/main/java/com/example/busroute/MainActivity.kt index 83c3530..846d852 100644 --- a/app/src/main/java/com/example/busroute/MainActivity.kt +++ b/app/src/main/java/com/example/busroute/MainActivity.kt @@ -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(R.id.accuracy).text = "${location.accuracy} %" - findViewById(R.id.position).text = "$latitude $longitude" - findViewById(R.id.speed).text = "${location.speed} m/s" - findViewById(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(R.id.accuracy).text = "${location.accuracy} %" +// findViewById(R.id.position).text = "$latitude $longitude" +// findViewById(R.id.speed).text = "${location.speed} m/s" +// findViewById(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 {