Viewで天気予報を表示する
Seo-4d696b75 opened this issue · comments
🌤️ APIから天気予報を取得して画面に表示します
Important
天気予報をAPIから取得する実装は作成済みコードを利用できます
ご自身で実装する余裕がない場合は活用してください
課題内容
- APIで天気予報を取得する
- 天気予報の取得中はProgressBarを表示する
- 天気予報を詳細画面に表示する
- 天気予報の取得に失敗したらダイアログを表示する(表示項目はメイン画面と同様)
- Relaodボタンをタップすると、ダイアログを閉じ天気予報を再取得する
- Closeボタンをタップすると、ダイアログを閉じメイン画面に戻る
これまで学んできた知識を活用して天気予報を表示しましょう
利用するAPI
OpenWeatherMapの5 day weather forecastを利用します。指定した地点の向こう5日間の天気情報を3時間ごとに取得できます。API keyの取得、地点の指定、レスポンスの表記方法の指定などは以前の課題 #24 を参照してください。
動作イメージ
参考資料
作成済みのコードを利用する
APIから天気予報を取得する実装は作成済みコードを利用できます
template/api-weather-forecast
ブランチをmainまたは作業ブランチにmergeしてください
API keyの指定
OpenWeatherMapから取得したAPI keyを記載したapi/apikey.properties
ファイルを追加します
(ファイルは.gitignoreに指定されているのでGitHub上に公開されません)
api_key="your_api_key"
API Serviceの初期化
特にパラメータを指定しなければapi/apikey.properties
で指定したAPI keyを利用します
val weather = YumemiWeather()
利用する関数
YumemiWeather
suspend fun fetchJsonForecastAsync(json: String) : String
- ランダムにエラーが発生してUnknownExceptionをthrowします
- Requestで指定した都市の天気予報をJSON形式の文字列で返します
- Requestで指定した都市が既知の都市ID一覧に含まれない場合はIllegalArgumentExceptionをthrowします
都市ID一覧
都市名 | id | country |
---|---|---|
札幌 | 2128295 | JP |
釧路 | 2129376 | JP |
仙台 | 2111149 | JP |
新潟 | 1855431 | JP |
東京 | 1850144 | JP |
名古屋 | 1856057 | JP |
金沢 | 1860243 | JP |
大阪 | 1853909 | JP |
広島 | 1862415 | JP |
高知 | 1859146 | JP |
福岡 | 1863967 | JP |
鹿児島 | 1860827 | JP |
那覇 | 1856035 | JP |
New York | 5128581 | US |
London | 2643743 | GB |
Request
WeatherRequest
Key | 型 | フォーマット | 例 |
---|---|---|---|
area | String | 都市名 | 東京 |
date | String | ISO8601拡張形式 "yyyy-MM-dd'T'HH:mm" | 2020-04-01T12:00 |
Response
ForecastResponse
Key | 型 | フォーマット | 例 |
---|---|---|---|
list | List<ForecastPoint> | ||
area | String | requestと同じ | 東京 |
ForecastPoint
Key | 型 | フォーマット | 例 |
---|---|---|---|
weather | String | sunny, cloudy, rainy, snow | sunny |
temperature | Int | -- | 20 |
date | String | ISO8601拡張形式 "yyyy-MM-dd'T'HH:mm" | 2020-04-01T12:00 |