Вызов API и хранение данных:
Код: Выделить всё
api.getWeatherData(
location.latitude,
location.longitude,
"temperature_2m,relative_humidity_2m,apparent_temperature,precipitation,weather_code,wind_speed_10m,wind_direction_10m",
"visibility",
"temperature_2m_max,temperature_2m_min,sunrise,sunset,daylight_duration,uv_index_max",
"auto",
1
).enqueue(object : Callback { // Change to WeatherResults
@RequiresApi(Build.VERSION_CODES.O)
override fun onResponse(call: Call, response: Response) {
// Provide more detailed error messages based on response code if necessary
if (response.isSuccessful) {
response.body()?.let {
weatherCache.updateCache(it) // Update the weather cache
Log.d("API Call", "Full API Response: ${response.body()}")
onSuccess(it)
} ?: onFailure(Throwable("Response body is null"))
} else {
onFailure(Throwable("Error: ${response.code()}"))
}
}
override fun onFailure(call: Call, t: Throwable) {
onFailure(t)
}
})
Код: Выделить всё
import kotlinx.serialization.Serializable
import kotlinx.serialization.SerialName
@Serializable
data class WeatherResults(
val current: Current? = null,
val daily: Daily? = null,
val hourly: Hourly? = null
)
Код: Выделить всё
import kotlinx.serialization.Serializable
import kotlinx.serialization.SerialName
@Serializable
data class Current(
@SerialName("temperature_2m") val temperature: Double?, // Works as expected
@SerialName("apparent_temperature") val apparentTemperature: Double?,
@SerialName("relative_humidity_2m") val relativeHumidity: Int?, // Matches JSON
@SerialName("weather_code") val weatherCode: Int?,
@SerialName("wind_speed_10m") val windSpeed: Double?,
@SerialName("wind_direction_10m") val windDirection: Double?,
val visibility: Int?,
val time: String
)
Код: Выделить всё
import kotlinx.serialization.Serializable
import kotlinx.serialization.SerialName
@Serializable
data class Daily(
val time: List?,
@SerialName("weather_code") val weatherCode: List?,
@SerialName("temperature_2m_max") val temperatureMax: List?,
@SerialName("temperature_2m_min") val temperatureMin: List?,
@SerialName("precipitation_probability_max") val precipitationProbability: List?,
@SerialName("apparent_temperature_max") val apparentTemperatureMax: List?,
@SerialName("apparent_temperature_min") val apparentTemperatureMin: List?,
val sunrise: List?,
val sunset: List?,
@SerialName("sunshine_duration") val sunshineDuration: List?,
@SerialName("uv_index_max") val uvIndexMax: List?
)
Подробнее здесь: https://stackoverflow.com/questions/790 ... -variables