package cn.flightfeather.thirdappmodule.util.location
|
|
import android.content.Context
|
import android.util.Log
|
import com.amap.api.location.AMapLocation
|
import com.amap.api.location.AMapLocationClient
|
import com.amap.api.location.AMapLocationClientOption
|
import com.amap.api.location.AMapLocationListener
|
|
|
/**
|
* @author riku
|
* Date: 2020/5/29
|
* 定位信息工具
|
*/
|
class LocationUtil(context: Context) : AMapLocationListener {
|
|
private var onChanged: (location: AMapLocation) -> Unit = {}
|
|
private val mLocationClient:AMapLocationClient = AMapLocationClient(context).apply {
|
setLocationListener(this@LocationUtil)
|
}
|
|
init {
|
val mLocationOption = AMapLocationClientOption().apply {
|
isNeedAddress = true
|
locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy
|
interval = 1000
|
}
|
mLocationClient.setLocationOption(mLocationOption)
|
}
|
|
fun startLocation(onChanged: (location: AMapLocation) -> Unit) {
|
this.onChanged = onChanged
|
mLocationClient.startLocation()
|
}
|
|
fun onDestroy() {
|
mLocationClient.stopLocation()
|
mLocationClient.onDestroy()
|
}
|
|
override fun onLocationChanged(p0: AMapLocation?) {
|
p0?.let {location ->
|
if (location.errorCode == 0) {
|
onChanged(location)
|
} else {
|
Log.e("AmapError","location Error, ErrCode:"
|
+ location.errorCode + ", errInfo:"
|
+ location.errorInfo)
|
}
|
}
|
}
|
}
|