요약
•
조깅을 하며 쓰레기를 줍는다는 뜻의 플로깅을 하는 플로거들을 위하여 플로깅 기록을 아카이빙하고 플로깅 크루를 모집하거나 구할 수 있는 앱
역할
•
총 5명이 함께 진행 (Android 2명, Server 2명, Designer 1명)
•
Android 개발
성과
•
2022 인하대학교 슈퍼챌린지 해커톤 최우수상 수상
트러블 슈팅
발생 문제
•
네이버 지도를 캡처해서 캡처한 사진을 다음 프래그먼트로 넘겨주는 작업
◦
화면을 캡처하는 코드를 구현해서 지도를 캡처할까 했지만 , 캡처한 사진을 갤러리에 따로 저장하지 않고 바로 다른 Fragment로 넘겨주는 작업과 해당 화면에 플로깅 기록들도 같이 나오는데 지도 부분만 캡처하는 방법이 필요했습니다.
◦
네이버 지도 레퍼런스를 찾던 중 takeSnapShot이라는 함수를 발견하였고 해당 함수가 지도를 캡처하는 함수임을 알 수 있었습니다.
◦
해당 함수로 지도를 캡처한 후 Bundle로 bitmap 객체를 Parcelable 형태로 넘겨서 원하는 기능을 구현할 수 있었습니다.
•
캘린더에 해당 날짜를 클릭했을 때 해당 날짜가 서버에서 넘어온 몇 번째 인덱스인지 알아야 해당 날짜의 데이터를 조회할 수 있었습니다.
◦
인덱스를 캘린더에 같이 저장할 수 없어서 인덱스를 알아낼 방법이 필요했습니다.
◦
서버에서 넘어온 데이터들을 List에 저장한 뒤 해당 날짜를 클릭했을 때 List에서 탐색해서 해당 날짜의 데이터를 찾아서 인덱스를 출력했습니다.
◦
HashMap으로 구현했으면 O(1) time에 처리가 가능했을 것 같습니다.
•
이전 프래그먼트로 뒤로 가면서 해당 프래그먼트에 맞는 BottomNavigationView 선택.
◦
BottomNavigationView를 이용해서 움직인 프래그먼트들끼리 뒤로 가기 버튼을 누를 시에 프래그먼트는 뒤로 가지만 해당 BottomNavigaionView가 선택되지 않는다는 문제를 발견했습니다.
◦
각 Fragment마다 태그를 달아준 뒤 onBackPressed()가 호출되었을 시 프래그먼트에 해당하는 태그를 찾은 뒤 BottomNavigationView의 아이템이 체크되게 해주었습니다.
•
프래그먼트들간 이동에서 뒤로 가기 버튼 눌렀을 시 이전 프래그먼트로 이동.
◦
replace().addToBackStack(null)을 이용해서 쉽게 구현할 수 있었습니다.