[안드로이드 프로젝트]Remarquer

Android Chen·2021년 10월 28일
0

프로젝트 요약

  • 2021-03 ~ 2021-07 까지 진행했던 안드로이드 프로젝트
  • 버스 하차시 알림 제공 서비스 구현
  • 탑승한 버스를 구글 클라우드 플랫폼 내의 SpringBoot 서버에서 공공데이터포털 API로 불러와 MySQL 데이터베이스에 저장
  • 실시간으로 버스 위치가 업데이트 되며 사용자가 선택한 버스와 비교하여 현재 탑승여부를 판단함
  • 하차 이전 알림을 제공하며 환승이 필요한 경우 하차지점으로부터 도착지까지의 경로를 재탐색하여 현재 위치로부터 최적화된 경로 제공

구현방식

  1. 사용자는 서버와 DB에 회원가입과 로그인 과정을 거치며, 인증과 동시에 파이어베이스에서 사용할 토큰을 DB에 저장함

  2. 출발지와 도착지를 입력하고 경로 탐색 버튼을 누르면 서버에서 경로를 계산하여 반환하고, 사용자가 원하는 경로를 선택함

  3. 주기적으로 사용자의 위치를 서버에 공유하기 시작하며, 서버는 해당 버스의 위치를 API로 주기적으로 갱신함.

  4. 사용자의 위치와 일정 버스와의 거리가 근접하게 유지되면, 탑승 버스로 판단하고, 사용자는 더 이상 위치를 서버에 전송하지 않음

  5. 탑승 버스가 목적지나 환승지와 근접하면, 사용자에게 하차벨 알림을 제공하고, 환승해야 하는 경우 다시 재탐색하도록 구현

구현방식 설명

  • 서버에서 버스 위치를 조회하는 API를 사용하기 위해, 다음과 같이 공공데이터 포털에서 불러온 버스코드와 도시코드 등을 request에서 요구하는 형식으로 변환함

  • 별도의 코드를 작성하여 테이블에 매칭되는 레코드들을 저장해 두었고, 슬라이드와 같이 저장해둔 정보를 불러와 필요한 정보들로 버스 정보를 가공함.

  • 이후 API를 통해 응답 받은 버스들의 실시간 위치를 테이블에 기록해 두며 동작함

탑승버스 인식방법

  • 사용자가 경로를 선택하면 해당 버스는 주시 할 버스 테이블에 등록하게 되고, 버스의 위치와 사용자의 위치를 비교하여 가장 가깝고 일정 거리 이내의 버스를 판단하여 hit라는 가중치를 높이는 방식으로 탑승 버스를 인식함

  • 사용자는 탑승한 버스가 판별되기까지 지속적으로 위치를 업데이트 하며, 탑승으로 판별된 버스가 존재하면 서버에서 stop 응답을 받고 위치 전송 서비스를 멈춤

  • 서버는 탑승으로 판별된 버스가 목적지나 환승지와 근접하게 되면 하차 알림을 전송하고, 환승인 경우, 다시 경로를 선정하는 과정으로 돌아감

User Scenario

  • 강남대역에서 출발하여 창현고등학교로 이동하는 시나리오를 작성했습니다. 로그인을 통해 서버로부터 인증을 받고, 사진과 같이 맵 액티비티로 이동함.

  • 현재 사용자는 출발지와 목적지를 각각 강남대역과 창현고등학교로 설정했음.

  • 강남대역에서 출발하여 창현고등학교로 이동하는 시나리오.

  • 로그인을 통해 서버로부터 인증을 받고, 사진과 같이 맵 액티비티로 이동

  • 사용자는 출발지와 목적지를 각각 강남대역과 창현고등학교로 설정하였음

  • 화면과 같이 마커로 사용자의 탑승 위치를 나타내며, 메뉴 버튼에서 Check Current Status를 선택하면, Status_popup에서 사용자의 탑승 판별 여부를 확인할 수 있음.

  • 이후 서버에서 탑승 버스를 계산하고, 알림을 보내게 되면 사용자는 notification으로 알림을 수신.

  • notification을 누르면 재탐색 확인 화면으로 이동하고, 다시 다음 하차 알림 서비스로 이동.

profile
https://github.com/Userz1-redd

0개의 댓글