간단한 안드로이드 앱 만들기 (날씨 앱)

1. 간단한 날씨 앱 개발을 위한 설계 - Main Home

리저브콜드브루 2025. 2. 4. 17:49
728x90
반응형

안드로이드 기능과 기술 스택 정리

 

  • 언어: Kotlin
  • IDE: Android Studio

Main Home

위치 기반 서비스와 기상청 API를 이용해 현재 위치의 날씨 정보를 표시한다.

 

1. UI 구성 (예상)

설계 예시 이미지

기능 UI 요소 (예상) 추가 요소
현재 위치 표시 TextView GPS 데이터 활용
온도 표시 TextView, ImageView 날씨 아이콘 표시
최고/최저 온도 LinearLayout, TextView 아이콘 추가 가능
일간/주간 날씨 예보 RecyclerView, CardView ViewHolder 패턴 활용
대기질 정보 TextView, ProgressBar 색상 변화로 시각화
자외선 지수 TextView, ProgressBar 위험 수준에 따라 색상 변경
바람 정보 ImageView(방향 표시), TextView 화살표 회전 애니메이션
체감 온도 TextView 실제 온도와 비교 강조 표시
일출/일몰 정보 TextView, ImageView 해의 움직임 애니메이션 추가
  • 이벤트 처리:
    • Toast 메시지로 위치 권한 요청 상태 알림
  • XML과 Kotlin 상호작용:
    • findViewById로 UI 요소 참조
    • Logcat으로 디버깅

 

 

2. 위치 기반 서비스

Foreground vs Background 방식 비교

위치 정보를 가져오기 위한 방식은 포그라운드와 백그라운드 두 가지가 있다.

구분 포그라운드 위치 정보 백그라운드 위치 정보
앱 상태 앱이 실행 중일 때 앱이 꺼져 있거나 백그라운드 실행 시
필요한 권한 ACCESS_FINE_LOCATION ACCESS_FINE_LOCATION + ACCESS_BACKGROUND_LOCATION
배터리 소비 적음 많음
권한 요청 난이도 쉬움 어려움 (추가 설정 필요)
사용 예 지도 앱, 날씨 앱 배달 추적 앱, 피트니스 앱

날씨 앱을 개발하기 위해서 포그라운드 위치 정보를 사용할 예정이다.

 

  • 위치 권한 설정:
    • ACCESS_FINE_LOCATION (정밀 위치) 권한 선언 (AndroidManifest.xml)
    • 런타임 권한 요청 처리 (ActivityCompat.requestPermissions)
  • 현재 위치 가져오기:
    • FusedLocationProviderClient 활용 (Google Play Services)
      • Google Play Services에서 제공하는 위치 정보 API
      • GPS, Wi-Fi, 셀룰러 네트워크, 센서 등 여러 위치 제공자를 결합해 가장 정확하고 효율적인 위치 정보를 제공
    • LocationRequest로 GPS 기반 위치 데이터 수신
    • Geocoder : 위도/경도를 도시 이름으로 변환

 

 

3. 네트워크 통신

  • 기상청 API 연동:
    • OpenAPI에서 API Key 발급 및 설정
    • API 요청을 위한 인터넷 권한 추가 (INTERNET 권한)
  • Retrofit 활용:
    • Retrofit으로 날씨 정보 요청
      • Retrofit: REST API와 통신하기 위해 사용되는 HTTP 클라이언트 라이브러리
    • Gson으로 JSON 데이터 파싱
      • Gson: JSON 데이터를 Java/Kotlin 객체로 반환(Parsing) 해주는 라이브러리
  • 비동기 처리 (Coroutines):
    • API 호출을 메인 스레드 차단 없이 처리
    • suspend 함수 및 ViewModelScope.launch 활용
      • suspend: 일시 중단 가능한 함수를 정의할 때 사용하는 키워드, 일시 중단 후 다시 이어서 실행할 수 있는 비동기 작업을 만들 수 있다.
      • ViewModelScope.launch: 코루틴을 실행하는 범위를 ViewModel에 설정해 주는 기능. ViewModel이 살아있는 동안만 코루틴이 동작하고, Activity가 종료되면 자동으로 작업이 취소된다. (메모리 누수 방지 및 앱 성능 최적화)

 

 

4. 데이터 표시 및 상태 관리

MVVM (Model-View-ViewModel) 패턴이란?

UI와 데이터 로직을 분리하여 코드의 유지보수성과 확장성을 높이는 아키텍처 패턴

 

  • MVVM 패턴 적용:
    • ViewModel로 데이터 상태 관리
    • LiveData로 날씨 데이터 변경 시 UI 자동 업데이트
      • LiveData: UI와 데이터 간의 실시간 동기화를 간편하게 관리할 수 있는 관찰 가능한 데이터 홀더 클래스. 이 데이터가 변경될 때마다 자동으로 UI를 업데이트하는 데 사용.
  • 오류 처리 및 디버깅:
    • 네트워크 요청 실패 시 오류 메시지 표시
    • Logcat을 활용한 디버깅
728x90
반응형