package com.anguomob.total.lificycler
import android.Manifest.permission.ACCESS_FINE_LOCATION
import android.Manifest.permission.ACCESS_COARSE_LOCATION
import android.content.Context
import android.content.pm.PackageManager
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
import android.util.Log
import androidx.core.app.ActivityCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import com.anguomob.total.utils.LL
class MyLocationListener : LocationListener {
private val TAG = "MyLocationListener"
override fun onLocationChanged(p0: Location) {
Log.e(TAG, "onLocationChanged: ${p0}")
}
}
class MyLocationObserver(val context:Context,val listener:LocationListener):LifecycleObserver {
lateinit var locationManager: LocationManager
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
private fun startGetLocation() {
locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
//每3秒获取一次位置
if (ActivityCompat.checkSelfPermission(
context,
ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
context,
ACCESS_COARSE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
return
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 100f, listener)
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
private fun stopGetLocation() {
if (::locationManager.isInitialized) {
locationManager.removeUpdates(listener)
}
}
}
如何使用
lifecycle.addObserver(MyLocationObserver(this, object : LocationListener {
override fun onLocationChanged(location: Location) {
showLoading()
agWeatherViewModel.getDailyWeatherByPosition(location.latitude.toString(),
location.longitude.toString(),
onSuccess = {
dismissLoading()
initWeatherData(it, showCity = true)
},
onError = {
Toaster.show(it);
dismissLoading()
})
}
}))