일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 안드로이드
- linux
- Eclipse
- Retrofit2
- Kotlin
- .kt
- Git
- RecyclerView
- component
- Anro Coroutines
- ViewGroup
- view
- react
- http
- function scope
- android
- intent
- permission
- Anko SQLite
- java
- ReactDOM
- LinearLayout
- layout
- javascript
- cardview
- block scope
- RelativeLayout
- ConstraintLayout
- vim
- props
- Today
- Total
이것저것 다 개발
[Android] OpenWeatherMap 날씨 API 사용 앱 만들기 본문
OpenWeatherMap을 이용한 날씨 APP을 만들어보겠습니다.
사용한 라이브러리는 Http 통신을 위해 Retrofit2을 사용하였습니다.
먼저 OpenWeatherMap에 회원가입을 하고 API 호출을 위한 Key가 필요합니다.
Key를 얻었다면 안드로이드 프로젝트를 만들고 AndroidManifest.xml에 Internet Permission을 주겠습니다.
<uses-permission android:name="android.permission.INTERNET" />
다음으로 Retrofit2를 Dependency로 추가하겠습니다.
compile 'com.squareup.retrofit2:retrofit:2.4.0'
compile 'com.squareup.retrofit2:converter-gson:2.4.0'
http://yongyi1587.tistory.com/31 << Retrofit2 사용해보기
이전 글에서 설명한 Retrofit을 기반으로 RetoriftClient를 만들고 baseUrl을 설정해줍니다.
http://api.openweathermap.org/data/2.5/weather?lat=[latitude]&lon=[longitude]&APPID=[OPEN_WEATHER_MAP_KEY]
val retrofit: Retrofit? = Retrofit.Builder()
.baseUrl("http://api.openweathermap.org/data/2.5/")
.addConverterFactory(GsonConverterFactory.create())
.build()
다음으로 RetoriftService에 API를 선언해줍니다.
@GET("weather?")
fun getCurrentWeather(
@Query("lat") lat: String,
@Query("lon") lon: String,
@Query("APPID") APPID: String)
: Call<JsonObject>
OpenWeatherMap에는 여러가지의 날씨관련 API가 있으나
이 글에서는 latitude와 longitude를 기반으로 현재 위치의 날씨를 얻어오겠습니다.
fun getCurrentWeather() {
var res: Call<JsonObject> = RetrofitClient
.getInstance()
.buildRetrofit()
.getCurrentWeather(latitude, longitude, OPEN_WEATHER_MAP_KEY)
res.enqueue(object: Callback<JsonObject> {
override fun onFailure(call: Call<JsonObject>, t: Throwable) {
Log.d(TAG, "Failure : ${t.message.toString()}")
}
override fun onResponse(call: Call<JsonObject>, response: Response<JsonObject>) {
var jsonObj = JSONObject(response.body().toString())
Log.d(TAG , "Success :: $jsonObj")
}
})
}
Retrofit2를 이용한 Http 요청으로 latitude, longitudem, key 세가지를 parameter로 request 합니다.
response는 JsonObject로 받게되고 파싱 후 화면에 뿌려주면 간단한 날씨앱이 완성됩니다.
위 화면은 현재 날씨와 시간별 날씨 API 두 가지를 호출하여 간단하게 만들어본 화면입니다.
추가적으로 Glide와 MpChart 라이브러리를 이용하여 날씨를 이미지와 그래프로 표현해봤습니다.
## 위 코드는 코틀린으로 코딩된 소스입니다 ##
'Android' 카테고리의 다른 글
[Android] ProgressDialog 사용하기 (0) | 2018.07.13 |
---|---|
[Android] ConstraintLayout (0) | 2018.06.12 |
[Android] Retrofit2 사용해보기 (2) | 2018.05.25 |
[Android] MVC Pattern (0) | 2018.04.26 |
[Android] Kotlin Anko 간단하게 사용해보기 (0) | 2018.04.06 |