안드로이드용 미세먼지 가져오는 앱

소스코드 다운로드 : https://github.com/Linsoo/ParticleInfomation


Change Log
2017년04월10일
– OpenAPI 접속시도시 10초이내 접속이 되지 않으면 네트워크 장애 처리
– OpenAPI 연결후 데이터 받아오는거 역시 10초이내로 받지 못하면 네트워크 장애 처리
– logTextview를 스크롤 하고 새로 고침시 아무 내용이 나오지 않는 문제 수정
– IsOnline() 함수 삭제.. (온라인 상태와 상관없이 와이파이나 3g등의 네트워크가 있는지만 확인되는 함수라)
– OpenAPI 쿼리 수정
– Snackbar 추가

2017년04월08일
– 화면 portrait로 고정
– 하단 로그창에 로그가 누적되게 수정
– 하단 로그창에 에러는 빨간색 글자로 나오도록 수정
– 하단 로그창에 5dp Padding 적용
– openAPI 쿼리시 중간에 네트워크 에러 발생시 예외처리 추가
– openAPI 쿼리 전송전에 네트워크 연결 상태 확인 추가
– 위치 조회중 onLocationChanged가 연속으로 두번 발생해서 하단로그가 두개 찍히는 부분 수정
– 하단 로그창에 텍스트 변경시 내부적으로 Thread 관련 에러가 있었는데 runOnUiThread로 처리해서 해결

2017년04월07일
– 가끔 주소나 관측소 이름은 안나오는데 미세먼지 데이터값은 나오는 버그 수정
– 새로고침 연타시 값이 아예 안나오거나 pm값만 나오는 문제 수정

2017년03월25일
– 텍스트뷰에 스크롤바 추가
– 처음 실행시 자동으로 데이터 받도록 수정
– 새로고침 아이콘 변경
– 새로 고침시 TextView 내용 클리어
– pm 데이터 받지 못할경우 No Data로 나오도록 수정
– pm 데이터 창 처리 부분 수정
– 레이아웃중 값 보여주는 TextView를 가온데 정렬로 수정
– 좌우 스크롤 페이지 일단 1개로 고정

2017년03월24일
– 처음 커밋!


미세먼지 값을 보여주는 간단한 앱을 하나 만들었습니다.

앱을 만들게 된 동기는 부모님이 미세먼지 앱을 쓰시는데 이거 확인해보니 앱 자체 설명에 나온 에어코리아의 값과
동기화가 100% 안되는 현상이 있더군요.

유료결재를 안해서 그런건지 뭐가 문제인지 아무튼 몇번 동기화가 안되는 현상을 보니 별로 신용이 되지 않아서 삭제했습니다. 그리고 직접 만들어 보기로 했습니다.

첨엔 에어코리아 소스를 보면서 이거 어떻게 파싱해서 값 가져올수 있나를 한참 연구하다가 찾아보니 공공데이터 포털 이라는 곳에서 신청하면 OpenAPI를 제공해주더군요.

그리고 몇가지 좀 삽질을 한 결과 위 이미지 처럼 간단히 현재 위치값(GPS+네트워크)을 기반으로 가장 가까운 대기질 측정소를 선택해서 가장 최신 PM2.5, PM10 값을 가져다 보여주는 앱을 만들었습니다.

첨에 삽질한것중 하나가 공공데이터 포털에 API 사용 신청을 하면 자동승인이라고 해도 바로 사용 가능한게 아닙니다.
사이트에서는 승인됬다고 해도 몇시간은 지나야 실제로 사용이 가능합니다.
거기다가 문서는 하나인데 해당 API는 별도로 신청해야 하는게 있어서 그거 역시 삽질좀 했습니다.

개인이 API 신청하면 하루 트래픽이 500건이더군요.
그래서 인증키 부분은 삭제하고 소스 올렸습니다.

OpenAPIQuery.java파일을 열면final String strServiceKey = “” 부분이 있는데 이부분에 공공데이터 포털에서 받은 인증키를 넣어야지만 실제 작동을 합니다.

예외처리를 별로 한게 없으니 무슨 문제가 발생할지 모릅니다.
금요일 저녁이라 그런지 뭔가 의욕이 팍 줄어서 걍 작동만 하게 만들어 놓고 접으렵니다. ㅋㅋㅋ
나중에 쓰다가 뭔가 문제 생기면 그때 수정하도록 하죠.


참고
경위도 변환하는 코드는 http://javaexpert.tistory.com/142 에서 받아 사용했습니다.
측정소정보 조회 서비스, 대기오염정보 조회 서비스 서비스를 사용했습니다. (공공데이터포털에서 검색하면 나옵니다)


크리에이티브 커먼즈 라이선스Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

“안드로이드용 미세먼지 가져오는 앱”에 대한 15개의 댓글

  1. 안녕하세요~잘보고 있어용
    소스코드 다운받고 집어넣을거 집어넣은후 돌렸는데 빌드는 잘 됩니다만 gps문제가 있는지 등록위치 주소가 1600 Amphitheatre ~, USA라고 뜨고 로그창에서는 계속 현재위치 검색중이라고만 뜨네요…
    gps 설정해야하는게 있나요??

    1. GPS 경도 위도값 확인해보시고 제대로 나온거면 GPS를 주소로 쿼리 바꾸는 부분에 문제가 있을겁니다.

  2. 잘 보고 있습니다
    소스코드 다운받아서 안드로이드 스튜디오로 open한 후 OpenAPIQuery.java파일 열어서 제 키값 넣었는데 빌드가 안되네요…설정이 잘못된건가요? 다운받을건 다 받았습니다

    1. 아 그리고 API 두개를 받잖아요? 한개는 String strServiceKey = “” 여기에 넣는하고하면 다른 한개는 어디에 넣어야하나요?

  3. 공공데이터포털 사이트에서 국가대기오염정보 신청하였는데 또 신청해야되는 api가 따로 있나요?
    서비스키는 제 api 서비스키 사용하였습니다.

    1. 본문에 써 있는데로
      “측정소정보 조회 서비스, 대기오염정보 조회 서비스”
      두개가 필요합니다.

  4. ㅋㅋㅋㅋ 저도 제공해 주신 소스나 고쳐서 제 앱을 만들어 볼까 싶네요.
    여러 앱들이 이미 나와 있는데, 여러 사람이 사용해서 그런지 api 제한에 걸려서 조금 쓰다보면 수치가 갱신 안되는 앱들이 많더라구요.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.