안녕하세요
10초 간격으로 위치를 업데이트 받아 화면에 출력하여주는 화면을 생각하고 있습니다.
제가 이해한 바로는 Request에 interval을 1_000L 해두면 1초간격으로 업데이트 되는줄 알았습니다.
그런데 최초 앱 실행 이후 로그 한번 출력되고 interval이 안되네요
혹시 조건이
위치 이동이 발생한 후 콜백이 1초(인터벌)간격 뒤 라는 것일까요?
왜냐하면 5_000L 로 한뒤 이동하면 5초보다 더 지나서 로그가 뜨는데
1_000L 로하면 1초간격으로 업데이트 되는것 같고; 그래서 첫번째 조건이 위치이동이 있을것 인가요?
위치이동이 없다면 interval도 소용이 없는 걸까요?
제가 이해한 바로는 Request에 interval을 1_000L 해두면 1초간격으로 업데이트 되는줄 알았습니다.
그런데 최초 앱 실행 이후 로그 한번 출력되고 interval이 안되네요
혹시 조건이
위치 이동이 발생한 후 콜백이 1초(인터벌)간격 뒤 라는 것일까요?
왜냐하면 5_000L 로 한뒤 이동하면 5초보다 더 지나서 로그가 뜨는데
1_000L 로하면 1초간격으로 업데이트 되는것 같고; 그래서 첫번째 조건이 위치이동이 있을것 인가요?
위치이동이 없다면 interval도 소용이 없는 걸까요?
locationmanager보다 fusedlocationProviderclient 를 권장해서 사용해봤는데... 이렇게 사용하는게 아닐까요?
class MainActivity : AppCompatActivity() {
private lateinit var flpc: FusedLocationProviderClient
private lateinit var consoleAdapter: PrintAdapter
var logs = mutableListOf<Item>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
flpc = LocationServices.getFusedLocationProviderClient(this)
val locationRequest = LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, 1_000L)
.build()
val locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult) {
locationResult.lastLocation?.let { location ->
Log.d("Location", "Latitude : ${location.latitude}, Longitude : ${location.longitude} , speed : ${location.speed}")
}
}
}
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_COARSE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
return
}
flpc.requestLocationUpdates(locationRequest, locationCallback, null)
}
}