0
点赞
收藏
分享

微信扫一扫

Android 高德定位工具类

一只1994 2022-04-19 阅读 235
import android.Manifest
import androidx.activity.ComponentActivity
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import com.amap.api.location.AMapLocation
import com.amap.api.location.AMapLocationClient
import com.amap.api.location.AMapLocationClientOption
import com.amap.api.location.AMapLocationListener
import com.blankj.utilcode.util.ToastUtils

class AMapUtils(activity: ComponentActivity, callback: (aMapLocation: AMapLocation) -> Unit) {
    var aMapLocationClient: AMapLocationClient
    private val aMapLocationListener = AMapLocationListener {
        if (it != null && it.errorCode == 0) {
            callback(it)
        }
    }

    init {
        AMapLocationClient.updatePrivacyShow(activity, true, true)
        AMapLocationClient.updatePrivacyAgree(activity, true)
        aMapLocationClient = AMapLocationClient(activity)
        aMapLocationClient.setLocationListener(aMapLocationListener)
        activity.lifecycle.addObserver(object : DefaultLifecycleObserver {
            override fun onCreate(owner: LifecycleOwner) {
                super.onCreate(owner)
                PermissionUtil.requestPermissions(
                    arrayOf(
                        Manifest.permission.ACCESS_COARSE_LOCATION,
                        Manifest.permission.ACCESS_FINE_LOCATION,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.READ_EXTERNAL_STORAGE,
                        Manifest.permission.READ_PHONE_STATE,
                    ),
                    success = {
                        val aMapLocationClientOption = AMapLocationClientOption()
                        aMapLocationClientOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy
                        aMapLocationClientOption.isOnceLocationLatest = true
                        aMapLocationClientOption.isNeedAddress = true
                        aMapLocationClientOption.interval = Int.MAX_VALUE.toLong()
                        aMapLocationClient.setLocationOption(aMapLocationClientOption)
                        aMapLocationClient.startLocation()
                    },
                    fail = {
                        ToastUtils.showShort("请开启定位权限")
                    }
                )
            }

            override fun onDestroy(owner: LifecycleOwner) {
                super.onDestroy(owner)
                aMapLocationClient.stopLocation()
                aMapLocationClient.onDestroy()
            }
        })
    }


}

举报

相关推荐

0 条评论