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()
}
})
}
}
Android 高德定位工具类
最新推荐文章于 2024-06-01 18:29:03 发布