[Android] GPS를 이용한 여행 앱

당당·2023년 4월 20일
0

Android

목록 보기
3/3
post-thumbnail

https://github.com/dangdangs0/TripOrTravel

📆개발 시기

2021.09.01.-2022.06.10.


📝개발 목적

COVID-19는 내수 경제를 악화시키고 사람들의 이동량을 감소시켰다.


본 과제는 관심 지역의 숨은 관광지와 여행지를 사용자의 편의성에 맞게 소개하는 애플리케이션으로 GPS 사용아두이노 블루투스 통신을 활용해 차별화된 기능을 제공한다.

여행 계획을 세우기 위해 따로 캘린더에 들어갈 필요 없이 앱 내에서 제공하는 일정 관리 기능을 이용하여 쉽게 계획을 관리할 수 있고, 여행지 주변의 음식점을 힘들게 찾지 않고 바로 확인할 수 있다.

즉, 실제 우리가 여행을 계획할 때 필요한 단계를 모두 하나의 애플리케이션에서 해결할 수 있게 해 사용자의 편의성을 증가시켰다.

가까운 지역의 여행인 만큼 언제든 갈 수 있고 여행지에 대한 정보를 쉽고 빠르게 얻어서 사람들의 이동량을 늘리고, 국내 여행을 장려하여 우리 지역 내수 경제를 활성화에 도움을 준다.


🔍실험 환경

안드로이드 스튜디오 SDK 30
Windows 10
Intel i7-6700 CPU 3.40 GHz
RAM 16GB
MySQL
phpMyAdmin
갤럭시 노트 20 U
아두이노 Uno, 블루투스 모듈 HC-06, LCD 1602

🎁메뉴 구성


📱데이터베이스

user테이블

userlike 테이블

tourist 테이블

schedule 테이블

liketrigger


📃소스 코드

https://github.com/dangdangs0/TripOrTravel

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
String inData;

void setup() {
  Serial.begin(9600);       
    lcd.begin(16, 2);
    lcd.print("Welcome!");
    delay(3000);
    lcd.clear();
}
void loop() {
 int i=0;
  char commandbuffer[100];

  if(Serial.available()){
     delay(100);
     while( Serial.available() && i< 99) {
        commandbuffer[i++] = Serial.read();
     }
     commandbuffer[i++]='\0';
  }

  if(i>0)

     Serial.println((char*)commandbuffer);
     lcd.print((char*)commandbuffer);
     delay(1000);
     lcd.clear();
}

📺UI

로딩 및 블루투스 연결 화면


어플버튼 클릭을 하면 로딩화면이 나오고 2초후에 블루투스 연결 퍼미션 창이 뜬다.

블루투스 연결 및 검색, 테스트


search 버튼을 누를 경우 위와 같이 연결 가능한 블루투스 장치들이 출력된다.

HC-06을 누르고 paired devices를 클릭할 경우, 다음과 같이 HC-06 장치가 뜬다. (연결된 장치)
위의 텍스트를 통해 HC-06과 연결된 것을 확인할 수 있다.


테스트를 위해 SEND 버튼을 클릭하면, 다음과 같이 아두이노와 연결된 LCD에 connected라고 출력된다.

-> 버튼을 클릭할 경우 로그인화면으로 넘어간다.

로그인 및 회원가입 화면


로그인 화면에서 회원가입 화면으로 넘어갈 수 있다.

회원가입 화면에서는 아이디, 비밀번호, 비밀번호 확인, 관심지역을 입력받는다.

관심지역은 위와 같다.

로그인 및 메인화면(투어)


로그인 화면에서 회원가입된 회원정보를 입력하면,

위와 같은 메인 화면 중 투어 화면으로 진입한다.

메인 화면 하단의 메뉴 바

1. 일정 메뉴를 통하여 일정화면으로 이동
2. 투어 메뉴를 통하여 투어 화면의 관광지 리스트 및 사진 출력
3. 설정 메뉴를 통하여 회원 설정 화면으로 이동

메인화면(투어)

투어 화면에서는 테마관광지 리스트를 확인할 수 있다.
테마는 다음과 같이 다양한 테마가 있으며,
관광지 리스트에서는 이미지, 관광지 명, 좋아요 등이 확인 가능하다.

관광지의 좋아요 버튼을 누르거나 해제하면, 밑의 전체 좋아요 수가 변동이 된다.


테마 중 전망대 테마를 클릭하면 위와 같은 관광지 리스트로 새로고침이 된다.


관광지를 클릭했을 경우, 다음과 같은 항목이 나온다.

메인화면(투어)-일정 추가


두 항목 중 일정추가를 클릭하면 다음과 같이 관광지를 사용자의 일정에 등록할 수 있는 화면이 나타난다.

메인화면(투어)-지도 보기



지도 보기 항목을 클릭했을 경우, 위치 서비스 퍼미션에 대한 알림이 뜬다.
확인을 누를 경우, 현재 사용자의 위치로 자동 이동합니다.


검색 버튼을 클릭하면, 다음과 같이 관광지의 위치에 마커가 찍힌다.

음식점 버튼을 클릭할 경우, 관광지 주변의 음식점에 대한 위치가 마커로 찍힌다.

위성 버튼을 클릭했을 경우, 확인할 수 있는 화면이다.


두 마커 사이의 거리에 따라,


good


bad
500미터기준으로 goodbad가 나뉜다.


여담이지만, 한국 외의 미국, 일본 등의 나라는 길찾기를 지원한다.
이거때문에 얼마나 고생을 했었는지....

메인화면(일정)


사용자 일정 조회 및 캘린더

일정 유/무 표시 (.)




밑에 나타난 리스트를 클릭할 경우, 일정삭제 알림창이 뜨고 OK클릭시 일정삭제가 되는 것을 확인할 수 있다.

메인화면(설정)



비밀번호를 변경할 수 있다.

관심지역을 변경할 수 있다.


📰결과

https://youtu.be/CitxbnmsuOY

https://youtu.be/aGJacj5S4g0

아두이노와 안드로이드 스튜디오 연동시

거리에 따른 아두이노 bad

거리에 따른 good


✋🏻기술적 차별성

  • 사용자가 직접 원하는 지역을 검색하는 것이 아닌 사용자가 관심있는 지역에서의 관광지를 카드뷰로 출력하며, 이미지를 추가하여 눈에 보기 쉽게 함
  • 각각의 관광지에 2개의 테마를 추가하여 사용자가 원하는 테마를 기준으로 관광지를 따로 조회 가능
  • GPS를 통하여 사용자의 위치를 알 수 있으며, 관광지의 위치와 사용자 사이의 거리와 시간을 측정 가능하며, 주변의 음식점 파악 가능
  • 사용자에게 일정 시작일과 종료일을 받고, 두 날짜를 캘린더를 통하여 날짜 아래에 작은 표시로 표현해주어 쉽게 사용자 일정 관리(조회, 추가, 삭제) 가능
    -좋아요 기능을 통하여 사용자가 관광지에 좋아요를 표시할 수 있으며, 관광지 전체의 좋아요 수를 확인 가능
  • 아두이노와 안드로이드 스튜디오 사이의 블루투스 Socket 통신을 통해 사용자가 선택한 두 지점 사이의 거리에 따라 LCD판에 문구를 표시

📂고찰

  • 회원 가입 시 사용자에게 관심 지역을 확인 받아 그 관심지역에 관한
    관광지 리스트를 사용자가확인할 수 있으며, 관광지 테마에 따른
    관광지 리스트를 손쉽게 확인할 수 있어 계획에 도움.
  • 또한, 관광지를 클릭하여 일정에 바로 추가 및 관광지의 위치를 지도로 확인할 수 있으며 거리 확인 가능
  • 지도 상의 gps를 이용하여 주변에 음식점의 위치 확인 가능

🧸담당 역할

  • 데이터베이스 구성 및 데이터 입력
  • 아두이노와 안드로이드 블루투스 연결 및 회로 구성
  • 전체적인 UI 개발 및 데이터베이스와 안드로이드 연결
  • 로그인 화면 개발
  • 관광지 목록 개발
  • 사용자가 관심있는 관광지에 좋아요 버튼 추가 및 총 좋아요 수 출력
  • 일정 등록, 수정, 삭제, 조회 개발
  • 환경설정(비밀번호 변경, 관심지역 변경 등) 개발
  • 지도 상의 화면에서 사용자가 선택한 두 마커 사이의 거리에 따라
  • LCD판에 bad 또는 good을 출력하도록 개발

📚참고 자료

[1] 아두이노와 안드로이드 스튜디오 간의 lCD 블루투스 통신,
https://popcorn16.tistory.com/192
[2] 구글 길찾기, https://www.wingsquare.com/blog/drawing-driving-route-directions-between-two-locations-using-google-directions-in-google-map-android/
[3] 두 마커 사이의 거리 측정, https://metal00456.tistory.com/22
[4] 카드뷰, https://webnautes.tistory.com/1314
[5] 리사이클러뷰, https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=cosmosjs&logNo=220961054247
[6] 음식점 API, https://webnautes.tistory.com/1080

profile
MSSQL DBA 신입

0개의 댓글