Android 高德定位工具类

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()
            }
        })
    }


}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值