프로젝트/Android Project) 가장 가까운 주유소 찾기 app

가장 가까운 주유소 찾기 (2차 업데이트) 내용 (2)

roder 2022. 9. 10. 19:41

https://github.com/leeugun123/find_gas_station

 

GitHub - leeugun123/find_gas_station: find_gas

find_gas. Contribute to leeugun123/find_gas_station development by creating an account on GitHub.

github.com

 

이어서 업데이트 내용을 이야기해보자!

 

3. 카카오 내비 도입

 

가장 가까운 주유소를 찾는 이유는 무엇일까?

바로 기름이 없기 때문이다. 유저는 자신의 가장 가까운 주유소나 or 값이 가장 저렴한 주유소를 찾고, 그곳까지 도달하여 자신의 차에 주유하는 것이 목적이지만, 내 어플은 정보만 보여줄 뿐 정작 그곳까지는 가는 것은 유저에게 맡기는 불친절함(?)을 안겨주었다.

 

https://developers.kakao.com/

참고로 카카오 developer 홈페이지를 들어가면 카카오 맵이나 카카오 로그인등 다양한 API를 사용 할 수 있다.

개발자가 서버를 만들어 직접 api를 호출하는 방식도 있지만, 공공기관이나 기업에서 제공하는 API를 사용한다면,구현하고 싶은 것들을 보다 더 편리하게 만들 수 있다.

 

이처럼 카카오에서 제공하는 내비게이션 API를 통해 내비를 구현하고, 그 과정에서 좌표계를 또 다시 변환하여 API호출 매개변수에 맞게 좌표형식을 변형시켜주었다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
   navi_button_kakao.setOnClickListener(new View.OnClickListener() {
 
                @Override
                public void onClick(View view) {
                    Log.i(TAG, "카카오내비 설치");
 
                    //카카오 navi API 코드
                    Location destination = Location.newBuilder(oil_list.get_oil_name(),oil_list.getWgs84X(), oil_list.getWgs84Y()).build();
                    //현재 위치는 고려할 필요가 없는가?? 목적지 주유소 이름 ,x,y좌표
 
                    NaviOptions options = NaviOptions.newBuilder().setCoordType(CoordType.WGS84).setVehicleType(VehicleType.FIRST)
                            .setRpOption(RpOption.SHORTEST).build();
                    // 네비 경로 설정 , 카텍 좌표 , 1종 차량, 빠른길/최단거리 안내
                    // 1종 승용차/소형승합차/소형화물차
 
                    KakaoNaviParams params = KakaoNaviParams.newBuilder(destination)
                            .setNaviOptions(options)
                            .build();
 
                    KakaoNaviService.getInstance().navigate(view.getContext(),params);
 
 
                }
            }); //카카오 navi 버튼을 눌렀을때
cs

 

 이 과정에서 인증 실패 오류가 떠서 분석해본 결과 api를 호출하는 과정에서 key가 필요한데,  나는 그 키를 네이티브 앱키로 설정하였기 때문에 호출 권한에 문제가 있었다. 하지만 네이티브 앱키를 Admin key로 수정인증 권한을 업그레이드 하여 API호출을 성공시켰다.

 

하지만 내 어플과 유사한 타 어플을 보니 카카오 내비를 포함한 T맵이나 네이버지도 등 다양한 어플을 이용하여 목적지까지 위치를 안내해주는 서비스가 많아 이에 관해서 다양한 내비게이션 서비스를 도입 할 예정이다.

 

 

4. 주유소 상세 정보 

 

 

주유소 상세 이미지

 

추가적으로 주유소의 상세 정보를 확인 할 수 있는 액티비티와 Button을 추가하였다.

이 과정에서 상세정보 버튼을 누를 경우, 미리 저장해놓은 주유소 id를 파라미터로 넣어 추가적인 API를 호출한다. 이후 응답받은 데이터를 다음 액티비티로 넘아갈때 Intent를 통해 넘기는 방식으로 구현하였다. 이 액티비티를 통해 주유소의 주소나 전화번호, 세차장 여부,편의점 여부를 추가적인 정보를 확인 할 수 있다.

 

하지만

유저의 입장에서 가장 얻고자 하는 정보는 과연 무엇일까? 바로 세차장과 편의점 유무이다. 

따라서 상세정보를 굳이 누르지 않아도, 리사이클러뷰에 세차장과 편의점 유뮤를 UI로 리사이클러뷰를 띄워주는 것을 구현하였으나 속도가 너무 느리다.

 

그 이유는 주유소의 가격 같은 경우는 한번의 API를 호출하여 리사이클러뷰에 띄워주지만, 주유소의 상세정보는 주유소의 id를 하나씩 호출하여 보여주기 때문에 주유소의 개수만큼 api호출이 계속된다. 따라서 편의점과 세차장 여부를 알려주는 편의성을 제공하고자 하는 것이 정작 사용자의 불편함을 증대시키는 결과를 유도한다.

 

많은 고민 끝에 다음 업데이트시 Retrofit을 사용하여 api를 호출해 네트워크 속도를 빠르게 하고자 한다. 나 같은 경우는 HttpURLConnection을 이용하여 호출하였지만, 레트로핏을 사용하여 네트워크 속도를 좀 더 빠르게 하여 사용자의 편리성을 증대시키고자 한다.

 

 

5. 사용자 화면 크기에 맞게 UI 변형 

 

사실상 이부분이 가장 큰 골칫덩어리였다.

초기에는 내 휴대폰을 기준으로 어플을 만들었으니, 내가 확인했을때는 문제가 없었으나, 친구,엄마 다른 기기의 휴대폰으로 내 어플을 설치해보고 실행시킨 결과 UI가 난잡해지는 문제가 발생하였다.

 

어쩐지 사람들이 설치만하고 지우는 이유가 뭘까? 고민해보니 이런 UI 깨짐 현상이 사용자들을 떠나보내는 원인이였다.

 

급히 layout_weight를 설정하여 사용자의 화면에 맞게 비율을 조정하고, xml를 상속시킨 후,autoSizeMaxTextSize를 이용하여 textView의 글자 사이즈도 자동적으로 조절 할 수 있도록 구현하였다.

 

재배포하여 확인 한 결과 다행히 다른 기기에서도 화면 비율에 맞게 UI가 조정되는 것을 확인 할 수 있었다.

 

 어플을 개발 할 경우, 사용자의 화면 크기에 맞게 UI도 유동적으로 변형해야함을 실제 어플을 배포하면서 추가적으로 깨닫게 되었다.

 

 

# 현재 어플의 사용자 수와 사용하고 있는 기기의 수

 

 

 

업데이트 한 후, 한달이 지난 결과 사용자가 늘긴 하였으나, 여전히 다운로드를 받고 지우는 유저가 많았다. 

구글 플레이 리뷰라도 좀 작성하여 뭐가 불편한지라도 좀 올려줬으면 좋겠다.....

 

추가적인 업데이트 할 내용에 대해서는 종강을 한 후, 포스팅하도록 하겠다.