Android библиотека получения прогноза от сервиса rusmeteo.net, kotlin, maven  

 

1. Описание

Для удобства получения прогноза и использования в своих приложениях для android была написана библиотека rusmeteoWeather, она позволяет получать от сервиса rusmeteo.net прогноз погоды:

Прогноз на 10 дней

Почасовой прогноз на сутки

 

К сожалению сервис rusmeteo.net не предоставляет данные в JSON формате, только формат XML.

2. Подключение

Библиотека выложена в Maven Central Repository для общего пользования,  и легко добавляется в свой проект:

Добавьте зависимость в AndroidManifest.xml для доступа к интернету

<uses-permission android:name="android.permission.INTERNET" />

Добавьте зависимости в build.gradle проекта:

repositories {
  mavenCentral()
}
dependencies {
       implementation "ru.avicorp:rusmeteolibrary:1.0.0"
}

3. Использование

val rusmeteoWeather = RusmeteoWeather()//получение экземпляра 
//Формат запроса по своему местоположению уточните на rusmeteo.net, определение по координатам отсутствует,
// вероятно это добавят в будущем, в примере (Сергиев Посад)

//запрос почасового прогноза
rusmeteoWeather.rusForecastClockData = rusmeteoWeather.loadClockForecastData("https://rusmeteo.net/weather/sergiev-posad/hourly/")

//запрос прогноза на 10 дней
rusmeteoWeather.rusForecastDayData = rusmeteoWeather.loadDayForecastData("https://rusmeteo.net/weather/sergiev-posad/10days/")

4. Получение прогноза

Библиотека выдает данные в списках List (rusForecastClockData, rusForecastDayData)

//Проверка на получение данных и вывод почасового прогноза
        if (rusmeteoWeather.checkValidClockData()) {
            rusmeteoWeather.rusForecastClockData.forEachIndexed { i, _ ->
                with(rusmeteoWeather.rusForecastClockData[i]) {
                    Log.e(
                        "Forecast clock",
                        "clock ${dateClock}" +
                                ",weather ${weatherName}" +
                                ", current temp ${tempNightDay}°C" +
                                ", precipitation ${precipPercent}%" +
                                ", humidity ${humidityPercent}%" +
                                ", wind ${windSpeed}m/s" +
                                ", wind direction ${windDirection}" +
                                ", pressure ${pressureData} mm "
                    )
                }
            }
        }
//Проверка на получения данных и вывод 10-ти дневного прогноза                                                  
        if (rusmeteoWeather.checkValidDayData()) {
            rusmeteoWeather.rusForecastDayData.forEachIndexed { i, _ ->
                with(rusmeteoWeather.rusForecastDayData[i]) {
                    Log.e(
                        "Forecast days",
                        "day of the week ${weekDay}" +
                                ", month ${dateMonth}" +
                                ", daytime temp ${tempDay}°C" +
                                ", night temp ${tempNight}°C" +
                                ", weather ${weatherName}" +
                                ", precipitation ${precipPercent}%" +
                                ", wind ${windSpeed}m/s" +
                                ", night temp ${temperatureNight}°C" +
                                ", morning temp ${temperatureMorning}°C" +
                                ", daytime temp ${temperatureDay}°C" +
                                ", evening temp ${temperatureEvening}°C"
                    )
                }
            }
        }

При ошибке получения данных списки придут пустыми.

5. Реализация

Реализация в моем проекте smartHome (recyclerView)

 

<На главную>

 

Облако тегов