locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
geocoder = Geocoder(this, Locale.getDefault())
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_COARSE_LOCATION
) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this,
arrayOf(
Manifest.permission.ACCESS_COARSE_LOCATION,
Manifest.permission.ACCESS_FINE_LOCATION
),
1
)
return
}
val criteria = Criteria()
criteria.accuracy = Criteria.ACCURACY_COARSE;
criteria.isAltitudeRequired = false;
criteria.isBearingRequired = false;
criteria.isCostAllowed = true;
criteria.powerRequirement = Criteria.POWER_LOW;
val providerList = locationManager.getProviders(criteria,true)
val provider = if (providerList.contains(LocationManager.GPS_PROVIDER)) {
LocationManager.GPS_PROVIDER;
} else if (providerList.contains(LocationManager.NETWORK_PROVIDER)) {
LocationManager.NETWORK_PROVIDER;
} else {
Toast.makeText(this,"not support location",Toast.LENGTH_LONG).show()
return;
}
locationManager.requestLocationUpdates(provider, 1000, 0f, this);
override fun onLocationChanged(location: Location) {
if(PositionUtil.latitude == 0.0 || PositionUtil.longitude == 0.0){
PositionUtil.updateCurrentPosition(location.latitude,location.longitude)
vm.getCityWeather(this)
}
}