Skip to content

Instantly share code, notes, and snippets.

@andytriboletti
Created October 20, 2018 10:26
Show Gist options
  • Save andytriboletti/27f4fa1a23405d97ce93c7772038acc3 to your computer and use it in GitHub Desktop.
Save andytriboletti/27f4fa1a23405d97ce93c7772038acc3 to your computer and use it in GitHub Desktop.
Display Speed in MPH
package com.greenrobot.speedometer
import android.Manifest
import android.annotation.SuppressLint
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
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.karumi.dexter.Dexter
import com.karumi.dexter.PermissionToken
import com.karumi.dexter.listener.PermissionDeniedResponse
import com.karumi.dexter.listener.PermissionGrantedResponse
import com.karumi.dexter.listener.PermissionRequest
import com.karumi.dexter.listener.single.PermissionListener
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
private val UPDATE_INTERVAL = (10 * 1000).toLong() /* 10 secs */
private val FASTEST_INTERVAL: Long = 2000 /* 2 sec */
private lateinit var locationCallback: LocationCallback
val metersPerSecondToMilesPerHour = 2.23694;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
locationResult ?: return
for (location in locationResult.locations){
val mphSpeed = metersPerSecondToMilesPerHour * location.speed
mph.setText(mphSpeed.toString());
}
}
}
askForPermission();
}
fun askForPermission() {
Dexter.withActivity(this)
.withPermission(Manifest.permission.ACCESS_FINE_LOCATION)
.withListener(object : PermissionListener {
@SuppressLint("MissingPermission")
override fun onPermissionGranted(response: PermissionGrantedResponse) {
val locationRequest = LocationRequest()
locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
locationRequest.interval = UPDATE_INTERVAL
locationRequest.fastestInterval = FASTEST_INTERVAL
val fusedLocationClient = LocationServices.getFusedLocationProviderClient(this@MainActivity)
fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, null)
}
override fun onPermissionDenied(response: PermissionDeniedResponse) {
}
override fun onPermissionRationaleShouldBeShown(
permission: PermissionRequest,
token: PermissionToken
)
{
}
}).check()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment