Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用fusedLocationProvider以完全恒定的间隔(1分钟)获取位置_Android_Kotlin_Fusedlocationproviderapi_Android Fusedlocation_Fusedlocationproviderclient - Fatal编程技术网

Android 如何使用fusedLocationProvider以完全恒定的间隔(1分钟)获取位置

Android 如何使用fusedLocationProvider以完全恒定的间隔(1分钟)获取位置,android,kotlin,fusedlocationproviderapi,android-fusedlocation,fusedlocationproviderclient,Android,Kotlin,Fusedlocationproviderapi,Android Fusedlocation,Fusedlocationproviderclient,我想使用fusedLocationProvider获得具有精确常量间隔的位置 要求 以精确的恒定间隔(1分钟)获取位置 也可以在后台获取位置 因此,我开始服务,以获得位置。它给了我背景中的位置 但是我创建了如下的LocationRequest override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int { locationRequest = LocationRequest.c

我想使用fusedLocationProvider获得具有精确常量间隔的位置

要求

  • 以精确的恒定间隔(1分钟)获取位置
  • 也可以在后台获取位置
因此,我开始服务,以获得位置。它给了我背景中的位置

但是我创建了如下的LocationRequest

    override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
        locationRequest = LocationRequest.create().apply {
            interval = TimeUnit.SECONDS.toMillis(60)
            fastestInterval = TimeUnit.SECONDS.toMillis(60)
            priority = LocationRequest.PRIORITY_HIGH_ACCURACY
        }

        locationCallback = object : LocationCallback() {
            override fun onLocationResult(locationResult: LocationResult) {
                super.onLocationResult(locationResult)

                location = locationResult.lastLocation
            }
        }

        startForeground(9999, generateNotification(location))

        startLocationUpdates()

        return START_STICKY
    }

    private fun startLocationUpdates() {
        Log.d("LocationService", "startLocationUpdates()")
        val locationRequest = createLocationRequest() ?: return
        fusedLocationProviderClient.requestLocationUpdates(
            locationRequest,
            locationCallback,
            null)
    }

但更新后的位置不会经常给出

有时间隔1分钟,有时间隔1分钟20秒


我不知道为什么会发生这种情况。

“我想使用fusedLocationProvider获得具有精确恒定间隔的位置”-这是不可能的。“我不知道为什么会发生这种情况”——这就是它的行为记录
fastestInterval
是您获取位置更新的最快速度。这不是更新之间的确切时间。更新的到达速度可能慢于
fastestInterval
。此外,由于无法保证设备当前能够确定其位置,因此更新无法到达。