Skip to content

Commit 69fdfa6

Browse files
committed
Added location functionalities.
1 parent fae8156 commit 69fdfa6

1 file changed

Lines changed: 66 additions & 0 deletions

File tree

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
package com.nlinterface.utility
2+
3+
import android.app.Service
4+
import android.content.Intent
5+
import android.content.pm.PackageManager
6+
import android.os.IBinder
7+
import android.util.Log
8+
import androidx.core.app.ActivityCompat
9+
import com.google.android.gms.location.FusedLocationProviderClient
10+
import com.google.android.gms.location.LocationCallback
11+
import com.google.android.gms.location.LocationRequest
12+
import com.google.android.gms.location.LocationResult
13+
import com.google.android.gms.location.LocationServices
14+
import com.google.android.gms.location.Priority
15+
16+
class LocationGetter: Service() {
17+
18+
private lateinit var fusedLocationClient: FusedLocationProviderClient
19+
private lateinit var locationCallback: LocationCallback
20+
private val globalParameters = GlobalParameters.instance!!
21+
22+
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
23+
24+
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
25+
setupLocationCallback()
26+
startLocationUpdates()
27+
28+
return START_STICKY
29+
}
30+
31+
private fun setupLocationCallback() {
32+
locationCallback = object : LocationCallback() {
33+
override fun onLocationResult(locationResult: LocationResult) {
34+
if (locationResult.locations.isNotEmpty()) {
35+
globalParameters.location = locationResult.lastLocation!!
36+
Log.i("CurrentLocation", "The current location is:" +
37+
"${globalParameters.location.latitude}, " +
38+
"${globalParameters.location.longitude}")
39+
}
40+
}
41+
}
42+
}
43+
44+
private fun startLocationUpdates() {
45+
if (ActivityCompat.checkSelfPermission(this,
46+
android.Manifest.permission.ACCESS_FINE_LOCATION)
47+
== PackageManager.PERMISSION_GRANTED) {
48+
val locationRequest = LocationRequest.Builder(
49+
Priority.PRIORITY_LOW_POWER, 10000
50+
).apply {
51+
setMinUpdateIntervalMillis(5000)
52+
}.build()
53+
fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, null)
54+
}
55+
}
56+
57+
override fun onBind(intent: Intent?): IBinder? {
58+
return null
59+
}
60+
61+
override fun onDestroy() {
62+
fusedLocationClient.removeLocationUpdates(locationCallback)
63+
Log.i("Location", "Accessing the location was stopped")
64+
super.onDestroy()
65+
}
66+
}

0 commit comments

Comments
 (0)