반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 받은 트랙백

글 보관함


요즘 회사일 하느라고 진도를 못 나갔습니다.
흐름이 끊기지 않기 위해 일단 2과 완성 소스를 다운 받아서 실행해 봤습니다.

소스코드는 여기서 받으시면 됩니다.

https://github.com/udacity/Sunshine-Version-2/tree/2.09_display_data

혹은 이 github 로 가셔서 아래처럼 브랜치를 선택하면 됩니다.



2.09 display data 가 2과의 완성된 소스코드 입니다.

이 소스코드를 받은 다음 OpenWeather 앱 아이디를 제 것으로 수정한 다음에 실행했습니다.
요거 하는데도 좀 헤맸는데요. 어쨌든 됐습니다.

이 소스코드를 실행하면 처음에는 지금까지 봐 왔던 하드 코딩된 날짜들이 표시됩니다.

그런데 잘 보면 우상단에 메뉴 버튼이 있는데요.
이 버튼을 누르고 Refresh 를 선택하면 그 날씨 웹 사이트에서 현재 날씨를 받아서 표시해 줍니다.

저는 제가 사는 곳의 우편번호를 넣어서 제가 사는 곳이 표시되도록 했습니다.





Click on Refresh


그러면 날씨 웹 싸이트로 부터 아래와 같은 정보를 받습니다.


{"cod":"200","message":0.0243,"city":{"id":0,"name":"Eden Prairie","country":"US","coord":{"lat":44.8342,"lon":-93.4389}},"cnt":7,"list":[{"dt":1471888800,"temp":{"day":19.77,"min":19.77,"max":19.77,"night":19.77,"eve":19.77,"morn":19.77},"pressure":993.75,"humidity":57,"weather":[{"id":800,"main":"Clear","description":"sky is clear","icon":"02n"}],"speed":6.47,"deg":205,"clouds":8},{"dt":1471975200,"temp":{"day":26.23,"min":18.85,"max":28.32,"night":24.13,"eve":27.26,"morn":18.85},"pressure":993.82,"humidity":65,"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"speed":6.66,"deg":192,"clouds":48},{"dt":1472061600,"temp":{"day":21.63,"min":17.19,"max":23.82,"night":17.19,"eve":22.65,"morn":20.18},"pressure":990.44,"humidity":97,"weather":[{"id":501,"main":"Rain","description":"moderate rain","icon":"10d"}],"speed":3.48,"deg":313,"clouds":92,"rain":3.3},{"dt":1472148000,"temp":{"day":19.95,"min":13.88,"max":20.64,"night":13.88,"eve":20.64,"morn":14.4},"pressure":995.57,"humidity":0,"weather":[{"id":800,"main":"Clear","description":"sky is clear","icon":"01d"}],"speed":7.56,"deg":291,"clouds":2},{"dt":1472234400,"temp":{"day":20.98,"min":10.21,"max":20.98,"night":15.51,"eve":18.56,"morn":10.21},"pressure":998.44,"humidity":0,"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"speed":1.87,"deg":124,"clouds":86,"rain":1.08},{"dt":1472320800,"temp":{"day":18.07,"min":14.4,"max":18.07,"night":17.53,"eve":17.6,"morn":14.4},"pressure":993.44,"humidity":0,"weather":[{"id":502,"main":"Rain","description":"heavy intensity rain","icon":"10d"}],"speed":4.91,"deg":122,"clouds":98,"rain":13.41},{"dt":1472407200,"temp":{"day":20.11,"min":13.46,"max":20.86,"night":13.46,"eve":20.86,"morn":16.38},"pressure":992.58,"humidity":0,"weather":[{"id":500,"main":"Rain","description":"light rain","icon":"10d"}],"speed":3.43,"deg":343,"clouds":67,"rain":0.95}]}


이 정보를 필요한 것만 추려서 아래와 같이 표시합니다.




Weather in Eden Prairie



날씨가 좀 시원한 편이네요.
온도는 섭씨로 표시됩니다.

이렇게 표시되도록 하려면 지난번 소스에다 메뉴를 추가 하고 refresh button 을 만들어서 이 버튼을 선택했을 경우 이를 처리할 수 있도록 해야 합니다.

버튼 선택시에 지난번에 만들었던 AsyncTask 가 실행되도록 해야겠죠.
지난번에 살펴 봤듯이 이곳에서는 날씨 웹사이트에 정보를 요청한 후 이를 받아서 처리해야 합니다.

그런데 여기서 정보를 받는것은 JSON 포맷으로 받을 것이기 떄문에 이를 파싱하는 로직도 넣어야 합니다.

그리고 날씨 웹사이트에 정보를 요청하려면 Android Permission 들 중에 Internet Permission 을 Manifesto xml 파일에 세팅해야 합니다.

이 퍼미션 세팅에 대해서도 배울 겁니다.

대개 이런 기능들을 추가하면 위와 같이 작동되도록 할 수 있겠네요.

시간이 허락하는 대로 다시 이 강좌 공부를 계속 이어 나가야겠습니다.

반응형

Comment