【问题标题】:Widget for weather app how to get LocationTracker天气应用程序的小部件如何获取LocationTracker
【发布时间】:2023-01-31 18:13:41
【问题描述】:

我想为我的天气应用程序制作简单的小部件,以显示当地温度。我的问题是:如何获得位置追踪器在我的小部件类中?

class Widget: GlanceAppWidget() {...}

【问题讨论】:

  • 所以,我找到了解决方案:

标签: location android-jetpack-compose android-widget glance-appwidget glance


【解决方案1】:

我找到了解决方案,我使用 fusedLocationProviderClient

//client
                
val locationProviderClient =
                        LocationServices.getFusedLocationProviderClient(context)

所以,我的方法获取位置:

>   //get location
    private suspend fun getCurrentLocation(
        context: Context,
        locationClient: FusedLocationProviderClient
    ): Location? {
        val hasAccessFineLocationPermission = ContextCompat.checkSelfPermission(
            context,
            Manifest.permission.ACCESS_FINE_LOCATION
        ) == PackageManager.PERMISSION_GRANTED
        val hasAccessCoarseLocationPermission = ContextCompat.checkSelfPermission(
            context,
            Manifest.permission.ACCESS_COARSE_LOCATION
        ) == PackageManager.PERMISSION_GRANTED

        val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
        val isGpsEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) ||
                locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
        if (!hasAccessCoarseLocationPermission || !hasAccessFineLocationPermission || !isGpsEnabled) {
            return null
        }

        return suspendCancellableCoroutine { cont ->
            locationClient.lastLocation.apply {
                if (isComplete) {
                    if (isSuccessful) {
                        cont.resume(result)
                    } else {
                        cont.resume(null)
                    }
                    return@suspendCancellableCoroutine
                }
                addOnSuccessListener {
                    cont.resume(it)
                }
                addOnFailureListener {
                    cont.resume(null)
                }
                addOnCanceledListener {
                    cont.cancel()
                }
            }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 2013-02-26
    相关资源
    最近更新 更多