본문 바로가기
조그만 기술로 세상을 이롭게/고속도로어때

고속도로어때 개발은?

by eplus 2026. 5. 12.

1. 앱 개요

고속도로어때는
현재 GPS 위치 기준으로 가까운 고속도로 CCTV를 조회하고, 선택한 CCTV의 교통상황 화면을 보여주는 앱입니다.

핵심은 3가지입니다.

  • 현재 위치 가져오기
  • CCTV 목록 조회
  • 선택한 CCTV 영상/화면 표시

2. 기술적 요소

2-1. 개발 플랫폼

  • C#
  • .NET MAUI
  • 대상: Android

즉 하나의 C# 코드베이스로
안드로이드 앱을 만드는 구조입니다.


2-2. 위치 기반 기술

필수 기술:

  • Geolocation
  • 위치 권한 요청
  • GPS 활성 상태 확인

역할:

  • 현재 위도/경도를 가져옴
  • CCTV 검색의 기준 좌표로 사용

개발 포인트:

  • 권한 거부 처리
  • GPS 꺼짐 처리
  • 위치 조회 실패 시 재시도

2-3. 외부 Open API 연동

필수 기술:

  • HttpClient
  • JSON 파싱
  • 비동기 통신 async/await

역할:

  • 고속도로 CCTV Open API 호출
  • 주변 CCTV 목록 수신
  • 이름, 좌표, URL 추출

개발 포인트:

  • 통신 타임아웃
  • 응답 형식 예외 처리
  • 숫자/문자 혼합 JSON 파싱 안정화

2-4. 거리 계산 로직

필수 기술:

  • 좌표 거리 계산
  • 정렬 알고리즘

역할:

  • 사용자 위치와 CCTV 위치 간 거리 계산
  • 가까운 순서로 목록 정렬

보통:

  • Haversine 공식
  • 또는 단순 제곱 거리 비교

개발 포인트:

  • 성능보다 정확도/안정성 우선
  • 상위 20건 정도만 표시

2-5. UI 구성

현재 구조 기준:

  • 상단 상태 표시
  • 좌표 표시
  • CCTV 목록 Grid
  • 하단 영상/WebView

기술 요소:

  • Syncfusion SfDataGrid
  • WebView
  • Grid, Border, Label, Entry

역할:

  • CCTV 목록을 보기 좋게 표시
  • 선택한 CCTV를 하단 화면에 출력

개발 포인트:

  • 선택 행 강조
  • 행 높이/폰트 가독성
  • 반응형 레이아웃

2-6. 영상/화면 표시

현재 구현 방식:

  • WebView

역할:

  • 선택한 CCTV URL 표시
  • 교통상황 화면 표시

주의점:

  • 일부 CCTV URL이 http
  • Android에서 ERR_CLEARTEXT_NOT_PERMITTED 가능
  • network_security_config 필요 가능

개발 포인트:

  • URL 유효성 검사
  • HTTP/HTTPS 구분
  • WebView 실패 시 외부 브라우저 fallback 고려

2-7. 앱 배포/운영

필수 요소:

  • 앱 아이콘
  • splash 화면
  • keystore 서명
  • AAB 빌드
  • 구글플레이 비공개 테스트/출시

기술 요소:

  • ApplicationTitle
  • ApplicationId
  • ApplicationVersion
  • ApplicationDisplayVersion

개발 포인트:

  • 버전코드 증가
  • 릴리즈 서명
  • Play Console 테스트 트랙 관리

3. 필수 기능

3-1. 현재 위치 자동 조회

앱 실행 시

  • 위치 권한 확인
  • 현재 GPS 위치 조회
  • 위도/경도 표시

필수 이유:

  • 앱의 시작점

3-2. 주변 CCTV 조회

현재 위치 기준으로

  • CCTV API 호출
  • 거리 계산
  • 가까운 순으로 목록 표시

필수 이유:

  • 앱의 핵심 검색 기능

3-3. CCTV 선택 기능

목록에서 특정 CCTV 선택 시

  • 선택 이름 표시
  • 하단 화면 갱신
  • WebView에 URL 로드

필수 이유:

  • 실제 사용자 가치가 발생하는 부분

3-4. 재조회 기능

조회 버튼 또는 새로고침으로

  • 현재 위치 다시 취득
  • CCTV 목록 다시 조회

필수 이유:

  • 이동 중 사용 가능

3-5. 예외 처리

반드시 있어야 함:

  • GPS 꺼짐
  • 권한 거부
  • API 오류
  • URL 오류
  • 화면 표시 실패

필수 이유:

  • 모바일 앱은 실패 상황 대응이 매우 중요

4. 개발 수준으로 본 모듈 구조

4-1. 모델

예:

  • CctvInfo

포함 값:

  • 이름
  • URL
  • 위도
  • 경도
  • 거리

4-2. 서비스

예:

  • CctvService

역할:

  • API 호출
  • JSON 파싱
  • 거리 계산
  • 리스트 반환

4-3. 화면

예:

  • MainPage.xaml
  • MainPage.xaml.cs

역할:

  • 위치 조회 호출
  • Grid 바인딩
  • 선택 이벤트 처리
  • WebView 갱신

4-4. 설정

예:

  • AndroidManifest.xml
  • network_security_config.xml
  • MauiProgram.cs
  • csproj

역할:

  • 권한
  • cleartext 허용
  • 패키지 설정
  • 아이콘/스플래시
  • 배포 설정

5. 개발 난이도 기준 설명

초급 수준

  • 화면만 구성
  • 버튼 클릭 시 조회
  • 단순 리스트 표시

중급 수준

  • GPS 자동 조회
  • API 연동
  • 거리 계산
  • Grid 선택 이벤트
  • WebView 영상 표시
  • 예외 처리

실무 수준

  • 네트워크 오류 대응
  • 로딩 상태 관리
  • 계정/배포/버전 관리
  • Play Console 테스트
  • 개인정보처리방침/Data safety
  • UI 가독성/사용성 개선

지금 앱은
초급 앱이 아니라 중급 이상 실무형 위치기반 조회 앱에 가깝습니다.


6. 이 앱 개발에 필요한 핵심 역량

  • C# 문법
  • .NET MAUI UI 구성
  • Android 권한 처리
  • REST API 연동
  • JSON 파싱
  • 좌표/거리 계산
  • 모바일 배포 및 서명
  • 구글플레이 등록

7. 한 문장으로 정리

고속도로어때는
GPS, 외부 CCTV API, 거리 계산, Grid UI, WebView 표시를 결합한 위치기반 고속도로 교통정보 앱입니다.

728x90
반응형