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
반응형
'조그만 기술로 세상을 이롭게 > 고속도로어때' 카테고리의 다른 글
| 돌발상황정보 API 활용 및 개발 (0) | 2026.05.12 |
|---|---|
| ITS Open API 종류 및 활용 그리고 C# 예제 (0) | 2026.05.12 |
| ITS 국가교통정보센터 소개 및 OPEN API 활용 (0) | 2026.05.12 |
| 고속도로어때 출시 (0) | 2026.05.11 |
| 고속도로어때 앱 프로덕션 액세스 신청 (0) | 2026.05.08 |