С
locationsEnabled()
и getLocations()
, ну и уже делай проверку и дальше выполняй необходимое действиеон получает координаты из fusedLocationClient ))
обрабатывает их через geocoder и отдаёт LocationEntity,
Size: a a a
С
locationsEnabled()
и getLocations()
, ну и уже делай проверку и дальше выполняй необходимое действиеVV
VV
С
VV
class ForecastViewModel(
val locationProvider: ILocationProvider,
val remoteSource: RemoteForecastSource
): ViewModel() {
private val _locations: MutableLiveData<Location> = MutableLiveData()
val location: LiveData<Location>
get() = _locations
private val _forecast: MutableLiveData<Forecast> = MutableLiveData()
val forecast: LiveData<Forecast>
get() = _forecast
init {
updateLocations()
}
private fun updateLocations() {
viewModelScope.launch{
_locations.value = locationProvider.getLocations()
}
}
fun getCurrentWeather(location: LatLng) {
viewModelScope.launch{
_forecast.value = obtainRemoteForecast(location)
}
}
private suspend fun obtainRemoteForecast(location: LatLng) = withContext(Dispatchers.IO) {
remoteSource.getCurrentForecast(location.lat, location.lon)
}
}
С
class ForecastViewModel(
val locationProvider: ILocationProvider,
val remoteSource: RemoteForecastSource
): ViewModel() {
private val _locations: MutableLiveData<Location> = MutableLiveData()
val location: LiveData<Location>
get() = _locations
private val _forecast: MutableLiveData<Forecast> = MutableLiveData()
val forecast: LiveData<Forecast>
get() = _forecast
init {
updateLocations()
}
private fun updateLocations() {
viewModelScope.launch{
_locations.value = locationProvider.getLocations()
}
}
fun getCurrentWeather(location: LatLng) {
viewModelScope.launch{
_forecast.value = obtainRemoteForecast(location)
}
}
private suspend fun obtainRemoteForecast(location: LatLng) = withContext(Dispatchers.IO) {
remoteSource.getCurrentForecast(location.lat, location.lon)
}
}
VV
RemoteForecastSource
ЮЛ
ЮЛ
ЮЛ
ЮЛ
ЮЛ
VV
ЮЛ
ЮЛ
ЮЛ
ЮЛ
ЮЛ
ЮЛ