如何使用协程在android中每1秒检查一次GPS可用性

Posted

技术标签:

【中文标题】如何使用协程在android中每1秒检查一次GPS可用性【英文标题】:How to check GPS availability every 1 sec in android using coroutines 【发布时间】:2021-05-25 00:11:43 【问题描述】:

我正在开展一个需要根据位置请求数据的项目。因此,在开始请求位置数据之前检查权限后,我想检查用户的 Gps 是打开还是关闭。我只知道如何使用处理程序来做到这一点。但是有什么方法可以在 kotlin 协程中执行以下代码?

private fun isGpsAvailable() 


    val handler = Handler(Looper.getMainLooper())

    val runnable  = object : Runnable 
        override fun run() 
            val manager :LocationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
            if ( !manager.isProviderEnabled(LocationManager.GPS_PROVIDER) && !manager.isProviderEnabled(
                    LocationManager.GPS_PROVIDER)) 
                Log.d(TAG,"Gps is not available") 
                handler.postDelayed(this, 1000)
            else
                foregroundOnlyLocationService?.subscribeToLocationUpdates()
                    ?: Log.d(TAG, "Service Not Bound")
            
        
    
    handler.post(runnable)

【问题讨论】:

【参考方案1】:

您需要注册一个位置侦听器并将更新持续时间设置为您想要的任何内容 我猜你不能得到每 1 秒

【讨论】:

我知道如何获取位置。我只想知道如何使用协程而不是Handler kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/… 这个链接可以帮到你。

以上是关于如何使用协程在android中每1秒检查一次GPS可用性的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 协程在 Compose 函数中调用了两次而不是一次

如何在android中的ble中每5秒更新一次电池电量

我的协程在 Unity android 应用程序上运行速度较慢

在 Android 中每 10 秒显示一次数据

在 Android Studio 中每 10 秒显示一次位置

如何在ios中每n秒获取一次位置更新