Uh-hub / project_nanlina

1 stars 0 forks source link

프로젝트 기획 및 구현 기능 정리 #1

Open Uh-hub opened 2 years ago

Uh-hub commented 2 years ago

demo

틀 구성

각 PM 별 QR 코드 생성 QR 코드 몇 개를 생성하여 그 QR 코드들이 이용자가 이용할 PM이라고 생각하고 만들기 PM 주차장 또한 임의의 장소를 주차장으로 설정하기

1) 앱 로고 화면 2) 로그인/회원가입 화면

위치 정보 액세스

(앱)에서 내 기기 위치에 액세스 하도록 허용하시겠습니까? 팝업 띄우기 (항상 허용/한 번만 허용/ 거부 등) [거부 했을 때 이 권한을 거부하는 경우 기기의 기본 기능이 제대로 작동하지 않을 수 있습니다. 띄우기. 그 아래 선택지는 취소/거부] (허용 시) 지도 API 및 마커 띄우기(메인 화면)

마커

이동 시

이용자가 (PM 타고/안타고) 이동할 때, 5,10초 정도마다 실시간 정보 db로 보내기 + 실시간으로 스무스하게 움직이는(이용자의 움직임 예측) API 이용

내 정밀한 위치 기록하는 방법 2가지

  -핸드폰의 gps 센서 이용
  -3개의 통신사 기지국에 신호를 보내고 신호를 보내고 돌아오는 시간과 기지국까지의 거리를 계산하여 위치 정보 파악하는 
   API 이용 

4) PM 의 마커를 눌렀을 때, 도착 버튼 생성(PM까지 네비게이션)

5) QR 코드 찍는 버튼 -> QR 코드를 찍기 위해 카메라 이용 권한 받기 -> QR 코드를 찍고 인식하는 화면 띄우기
QR 코드를 찍으면 스트링 형식으로 저장 -> 웹서버와 통신해서 그 스트링(QR코드/PM번호)이 등록되어 있는 전동킥보드라고 인식되면 초록불 띄우며 운행 시작 -> 서버 끊기면 초록불에서 빨간불로 바꾸기

결제 모듈 만들지 않아도 됨

서버에 저장해서 한번에 관제할 수 있는 프로토콜을 개발

화면에 지도를 띄우고 PM의 (위도, 경도)를 불러와서 점/마커로 찍어서 나타내기 로그인 기능(추가적으로 시간 남으면 일정 시간 동안 이용자(관리자)가 이용하지 않으면 로그아웃) + 구현 서버랑 연결이 되어야 함 현재 위치 받아와서 저장/실시간으로 PM 위치 및 지도 뜨길 바람 / 유저 사용자가 맞는지 확인 / (서버에 위치 정보 보내고 마이크로(?) 서비스 도커(?) 위치를 통해서 그 다음 위치를 추적하는 인공지능 모델 개발해서 붙일 예정) 장고 기반으로 백엔드가 돌아가고 프론트엔드는 따로 붙이기

싱크 모듈 만들지 않아도 됨

db는 mysql 등 호환만 잘 된다면 상관무

패키징을 들고 서버로 소켓 통신을 보내고 안드로이드 앱에서 서버로 [사용자 아이디 / pm 전동킥보드 아이디(번호) / 시간 / 현재 위치(경도, 위도) ] 이 시리얼 정보를 보내면 그대로 저장

사용자 별 이용도 그래프(사용자 일, 주, 월 별 사용량 시각화)

웹 화면 상 여러 그래프와 PM 실시간 위치 등 어싱크로노스 프로그래밍(모든 내용들이 따로 작동/비동기 방식)으로 구성 뱀꼬리 길어지는 듯이 PM의 이동 정보를 선으로 표현하기 / 어려울 시, 점으로도 가능

공부 해야 할 내용

QR 코드 생성 방법 암호화 RSE

10/27(수요일) 까지 간단하게 레이아웃 짜본 후, depth, 플로우 차트, 소프트웨어 방법론, 콜백 순서도 작성 환경 / 버전 정보 / 개발 일정 작성해오기 (서버 버전, 파이썬 버전 문제, 도커 미지원 형태의 특정 최신 프레임워크를 사용하는 등의 문제 발생할 수 있으니 꼭 작성)

핸드쉐이킹

비교 앱

카0

:가장 비슷한 앱 :대부분의 PM 사의 PM 위치 및 가격 정보가 나옴 / PM을 이용하려면 그 회사의 앱을 다운 받는 화면으로 이동함

000 따릉이

:서울특별시에서 운영하는 따릉이를 대상으로, 특정 위치를 검색하면 그 위치에 대여 가능한 따릉이/뉴따릉이/e-따릉이의 수가 뜸 :대여 기능은 아직 없음

Q. PM 데이터? 안주는 건가? / 추적 및 속도제한..? 은 안하는 건가?

Uh-hub commented 2 years ago

10/23

  1. https://conkjh032.tistory.com/249 회원가입 및 로그인 화면 제작하기

  2. https://epdev.tistory.com/8 https://owly-expbook.tistory.com/21 지도 API 구글, 카카오, 네이버를 비교 네이버/카카오 추천(국내)

  3. https://www.ncloud.com/product/applicationService/maps 네이버 지도 API -directions 기능 필요한지 확인해보기(이건 비용 지불 필요)

  4. https://apis.map.kakao.com/android/ 카카오 지도 API 지도 위에 마커, 라인, 현재 위치 지도 위에 바로 표시 , 나침반 가능 (X?)

Q. 앱은 자바로, 웹은 파이썬으로 만들면 서로 정보를 주고 받을 수 있나..?

로그인, 회원가입 시 화면 - db(my sql)로 생성/PHP 파일 연동

5. PM의 종류 -전동 킥보드 / 전동 이륜평행차(세그웨이) / 전기자전거(스로틀 방식) (https://www.jeonju.go.kr/index.9is?contentUid=9be517a776a6b53f01771d5c61783864)

=> 선택지: 전체/전동 킥보드/전동 외륜보드/전동 이륜보드/전동 이륜평행차/전동스케이트보드 /전기자전거

Q.PM으로 정의한 종류가 무엇인지? PM 정의가 확실하지 않음 -> 내 생각: 위에 선택지 중에 회사가 최소 3개 있으면 포함

=> 정할 필요 없음/나는 그냥 있다 하고 만들면 됨

6. https://www.youtube.com/watch?v=1hfhUmb_bRc 이거 참고해서 만들어서 제출 https://www.youtube.com/watch?v=ra3EpF9WTow

Uh-hub commented 2 years ago

0찹 - 내비게이션 기능은 없음

Q. 내비게이션 기능을 넣나.? -> 넣어야 함(db에 5,10초씩 정보 전송)

https://www.youtube.com/watch?v=UZj3Wvw9eBE 실시간 위치 전송 중 GPS 기반 위치 서비스 2번째 방법은 더 찾아보기

내비게이션이라고 하면 먼거리는 버스를 타서 이동하게 해야 할까? 아니면 도보만 가능하게 해야 할까? PM을 타려고 버스나 지하철을 타러 가지는 않을 거라 생각함 + 사용자의 현재 위치/입력한 위치의 1km 반경 내에 있는 PM 주차장 및 PM만 뜨게 할 예정임 => 걸어서 가는 실시간 기능만 구현하기

Uh-hub commented 2 years ago

Q> 각 회사별로 결제 방법도 다르고 운전면허 필요 여부도 다른데 어디에 맞추면 좋을까요? 서비스 가능 구역에 제한이 있던데 그 부분까지 구현을 해야 할까요?

구현 방법 API 정하기

https://lpla.tistory.com/131 URL Scheme 사용하기

경로는 카카오 API, 검색은 네이버 API 가능?

https://api.ncloud-docs.com/docs/ai-naver-mapsdirections-driving 네이버 Driving 5 https://api.ncloud-docs.com/docs/ai-naver-mapsdirections15-driving 네이버 Driving 15

안드로이드의 위치 정보 서비스(2가지 방법) https://manorgass.tistory.com/82 여기에서 FusedLocationProvider(통합 위치 제공자)사용

https://help.dfinery.io/hc/ko/articles/360039757433-%EB%94%A5%EB%A7%81%ED%81%AC-Deeplink-URI%EC%8A%A4%ED%82%B4-%EC%9C%A0%EB%8B%88%EB%B2%84%EC%85%9C-%EB%A7%81%ED%81%AC-%EC%95%B1%EB%A7%81%ED%81%AC-%EA%B5%AC%EB%B6%84%EA%B3%BC-%EC%9D%B4%ED%95%B4 URL Scheme 의 정의 - URL Scheme 은 외부 앱 및 웹 사이트에서 그 앱을 열어서 수행하는 방식

https://sw-ke.facebook.com/groups/codingeverybody/permalink/1327874893919710/ 인도를 안내해주되, url scheme이 아닌 오픈 api 이용하여 길찾기 기능을 구현할 수 있는 T 맵 발견

https://www.youtube.com/watch?v=wx26aJFHAUc 이거 보고 지도 참고하기

정리

경로 추천 및 마커 표시- T맵 지도 API 이용 https://tmapapi.sktelecom.com/main.html#android/sample/androidSample.sample12

Fused Location Provider API 사용(google / 정확한 위치 제공 및 배터리 효율 상승) https://developers.google.com/location-context/fused-location-provider

키워드로 장소 검색 - T맵 API 사용 https://tmapapi.sktelecom.com/main.html#android/sample/androidSample.sample12

안드로이드 스튜디오

각 PM 별로 GPS 정보가 있고 db에 주차장의 모서리 위도와 경도가 저장되어 있는데 그 사각형 안으로 들어갔다는 gps 정보가 db로 보내졌을 때 반납이 완료 되었다는 창을 띄우기

Uh-hub commented 2 years ago

T맵 API 이용하여 경로 추천, 마커 표시, 키워드로 장소(주차장) 검색

google Fused Location Provider API를 이용하여 T맵 경로 추천

Uh-hub commented 2 years ago

위치 검색 창 -장소를 입력 받고 비슷한 장소가 뜨면 그 곳을 누르게 하고 누르면 그 장소의 위도와 경도를 받아서 지도에 표시

Uh-hub commented 2 years ago

T맵 -> SDK 파일 다운 받으려 했으나 보안 상의 에러가 뜸 => 카카오 지도 API로 전환

카카오 API 적용 중, build.gradle 파일 sync 에러 발생 -> build.gradle(Project~)에 의존성 추가하고 있었음 => build.gradle(Module:~)로 변경 => 성공

Uh-hub commented 2 years ago

카카오 지도 API 에서 google / 네이버로 변경할 지 고민 중 -> 1)카카오 지도 API에서 해결 되지 않던 에러 "안드로이드 Can`t load DaumMapEngineApi.so file 오류" "지도 SDK는 x86, x86_64를 지원 하지 않습니다. 따라서 avd에서는 정상으로 구동 되지 않습니다. " 라는 것을 뒤늦게 알게 되었고, 안드로이드 기기가 없기에 화요일에나 구동해볼 수 있을 것으로 보임 ->(....바꿀까...) https://devtalk.kakao.com/t/can-t-load-daummapengineapi-so-file/65740/3

대책

우선 공기계 올 때까지 에러 신경 쓰지 말고 마커 및 길찾기 기능 구현 https://github.com/mtjin/LandKorea_AndroidApp/tree/master/MapoGreen/app/src/main/res 이 분 코드 참고해보고 되지 않는다면 google로 변경

Uh-hub commented 2 years ago

https://github.com/wonderful-coding-life/sample.google.map/blob/master/app/src/main/java/com/example/map/MainActivity.java 유튜브 https://www.youtube.com/watch?v=mLqBNdqYEQw 구글맵 지도 API로 바꿈, 위 깃허브 코드 참고 중

구글맵 연결 및 지도 띄우기 성공

FusedLocationProvider

https://manorgass.tistory.com/82 코드 https://www.youtube.com/watch?v=XwW7WDOAiWE 유튜브

https://kay0426.tistory.com/3 커스텀 마커 등록 방법

Uh-hub commented 2 years ago

git에서 commit, push를 시도하다, merge를 해야 한다길래 버튼을 눌렀다가 마지막에 취소라고 생각했던 걸 눌렀는데 에러가 너무 많이 뜨고 알 수 없는 코드가 많이 생겨서 안드로이드 스튜디오에서 새로운 프로젝트를 생성하여 다시 클론 해옴

Uh-hub commented 2 years ago

11/7 commit -> 바다에 현 위치가 뜸(원인: IntroPage에서 바로MainActivity로 넘어가게 돼서 라고 생각/로그아웃 후, 회원 가입 하려고 했으나 회원 가입 실패라고 뜸) -> 로그인 후, map_permission으로 연결해두었으나, IntroPage는 혹시 몰라서 MainActivity로 이동하는 것을 수정하지 않음) ->수정 해서 IntroPage에서 허용 창으로 넘어가게 했으나 갑자기 구글 본사 위치를 반환함(@.@;;)

Uh-hub commented 2 years ago

여기서 저 0이 default 값인데 default 값이 출력 되어서 구글 본사 위치를 반환 한 것임 double latitude = intent.getDoubleExtra("latitude", 0); double longitude = intent.getDoubleExtra("longitude", 0);

Uh-hub commented 2 years ago

https://jeongchul.tistory.com/370 위치정보를 db 보내기

Uh-hub commented 2 years ago

https://webnautes.tistory.com/1249 코드 참고하여 현재 위치 띄우기 완료 https://stackoverflow.com/questions/45783467/com-google-android-gms-maps-model-markeroptions-on-a-null-object-reference (com.google.android.gms.maps.model.MarkerOptions)' on a null object reference에러 발생 -> @Override public void onMapReady(GoogleMap googleMap){ this.map = googleMap; } 으로 수정 -> 에러 해결

Uh-hub commented 2 years ago

계획 대로 라면 주차장 정보가 담겨있는 csv 파일 안에 있는 정보를 mySQL로 넘기고 mySQL로부터 데이터를 가져와서 마커를 띄우는 게 1차적인 목표

광주광역시공영주차장 현황~.csv 파일(예시 데이터)

id = 주차장 번호 name = 주차장 이름 address = 주차장 주소 latitude = 위도 좌표 longitude = 경도 좌표 photo = 주차장 사진

주차장 별 pm 현황 gcooter(지쿠터) = 공유 킥보드 deer(디어) = 공유 킥보드 beam(빔) = 공유 킥보드 talang(타랑께) = 공유 자전거 kickboard = 공유 킥보드 bicycle = 공유 자전거

= > 현재 csv 파일을 json 파일로 변환함

Uh-hub commented 2 years ago

https://dev-dain.tistory.com/78 csv 파일 -> json 파일 변환 후 마커를 바로 띄움

https://kay0426.tistory.com/3 이거 도전해보기

Uh-hub commented 2 years ago

https://www.youtube.com/watch?v=8r1W_7nuo2U MySQL 설치 및 연동

Uh-hub commented 2 years ago

https://yoo-hyeok.tistory.com/16 안드로이드 <-> PHP <-> MySQL 연동

XAMPP(PHP)를 실행시키는데 MySQL을 실행하려고 하면 "Error: MySQL shutdown unexpectedly." 발생 -> 구글링 결과, port가 3306, 3307 모두 이미 동작 중이었다. https://jeffrey-oh.tistory.com/141 -> config에서 my.ini 파일에서 client와 mysqld port를 3305로 바꾸었더니 동작됨

Uh-hub commented 2 years ago

위의 방법대로 하면 실행은 되는데, MariaDB에서 사용중이라는 경고문구와 MySQL WILL NOT start without the configured ports free! You need to uninstall/disable/reconfigure the blocking application or reconfigure MySQL and the Control Panel to listen on a different port 라는 경고 문구가 떴다. 그래서 mariaDB의 port를 3307로 바꾸어두고, 서비스 -> mariaDB를 재시작 시키고 xampp의 mysql port를 3306으로 바꾸어 실행했더니 되었다. 에러없이 실행 되었다. https://jeffrey-oh.tistory.com/141

Uh-hub commented 2 years ago

임시 메모

메모장 등의 문서편집기(NetBrain 등)으로 프로그램 작성 -> htdocs 폴더에 파일이름.php 로 저장 인코딩 옵션은 UTF-8로 선택

http://localhost/파일이름.php 로 실행하면 됨

에러 : MySQL error: 'Access denied for user 'root'@'localhost' 비밀번호를 아무리 쳐도 안돼서 구글링도 하고 유튜브 영상도 보면서 다 따라 해 보아도 이 에러가 뜨길래 php 강의를 들었다. 처음에는 비밀번호가 없으니까 enter를 치라는 말을 못 들어서 몇 시간 동안 헤매었다는 것을 깨달았다.

Uh-hub commented 2 years ago

mysql에서 table을 만들고 csv 파일을 업로드 까지 했지만 위의 에러가 또다시 발생했다. 그 이유는 wampserver의 default db가 mariaDB였기 때문이다. -> 이것을 mysql로 바꾸어주면 된다

Uh-hub commented 2 years ago

하핳하하하하하ㅏㅎ하ㅏ하하ㅏ핳하하하하하하하하하하하하하하하하하 구글 지도 api 에 길찾기 기능을 이용하는 것이 우리나라는 금지 되어있다는 것을 마커까지 다 띄운 다음에야 발견했다. ......^^행복하다. 서둘러 Tmap으로 api를 바꾸어야 할 것 같다.

Uh-hub commented 2 years ago

현재 위치 주변의 마커를 클릭 -> 그 위치 까지의 최단 거리를 그리고 아래에 창 형식으로 띄우기(길찾기 1번 화면)

https://mailmail.tistory.com/21

지도 api를 바꾸지 않아도 될 것 같다. google direction api를 이용하면 될 것 같다

Uh-hub commented 2 years ago

https://se0r1-tae27.tistory.com/entry/Team-Project-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-Directions-API%EC%97%90%EC%84%9C-%ED%8F%B4%EB%A6%AC%EB%9D%BC%EC%9D%B8-Decode200518?category=841932 구글 지도 api = 구글 directions api

Uh-hub commented 2 years ago

https://se0r1-tae27.tistory.com/entry/Team-Project-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EB%A1%9C-Direction-API-%EC%A0%95%EB%B3%B4-%EC%96%BB%EC%96%B4%EC%98%A4%EA%B8%B0200418 이것도 구글 지도 api

https://se0r1-tae27.tistory.com/entry/Team-Project-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EB%A1%9C-Direction-API-%EC%A0%95%EB%B3%B4-%EC%96%BB%EC%96%B4%EC%98%A4%EA%B8%B0200418 https://ghj1001020.tistory.com/305

https://coder-in-war.tistory.com/entry/Andorid-09-OnMapReadyCallBack%EC%9C%BC%EB%A1%9C-Google-Map-%EC%9D%B4%EC%9A%A9%ED%95%B4%EB%B3%B4%EA%B8%B0

Uh-hub commented 2 years ago

https://stickode.com/detail.html?no=2066 구글 지도 api 중 direction api를 사용하려고 하였으나 http://www.happycgi.com/16327 우리나라는 이용할 수 없다는 사실 확인 했음 => 구글 지도 api는 그대로 이용하되, t맵의 길찾기 기능을 이용해보려고 한다. https://stickode.com/detail.html?no=2066

Uh-hub commented 2 years ago

지도에서 마커를 클릭하면 현재 위치(x)를 클릭한 주차장 위치(y)를 선으로 연결한 화면을 띄워준다. 문제: x로 창 닫기를 누르지 않는 이상, 현재 위치를 업데이트 하면서 창이 떴으면 좋겠음

Uh-hub commented 2 years ago

피그마에서 아이템 가져오는 방법 image

image

아래에 xml 코드

Uh-hub commented 2 years ago

https://jinseongsoft.tistory.com/34 t맵 길찾기 참고