프로덕트

아티클

전체 보기
피유진

피유진

스코어는 운동 정보 어떻게 기록하지?

안녕하세요 스코어 안드로이드 개발자 피유진입니다🫠

오늘은 안드로이드 개발부터 배포까지의 과정 중에서 고민했던 부분이나 막혔던 부분을 공유하려고 합니다

스코어(Score)란?

스코어는 운동 부족으로 인해 기초 체력이 떨어지는 대한민국의 중•고등학생들을 위해 친구들과 함께 운동을 기록하며 협력하고 랭킹을 통해 경쟁하면서 기초 체력의 증진을 돕는 앱 서비스입니다.

이번 스코어 프로젝트는 내 위치를 기반으로한 운동 경로를 받아오는 것이 핵심 기능입니다. 운동하는 동안 이동 경로를 파악하고 네이버 지도에서 현재 위치와 운동 시간, 이동 거리, 소모한 칼로리 등을 보여주고 운동이 완료되면 지도 위에 내가 이동한 경로를 선으로 이어 한눈에 보여줍니다.

image.pngimage2.png

"이런 기능을 구현하기 위해서 과연 안드로이드에서는 어떤 권한과 기능이 필요할까?"

우선 운동 기록 기능 시작 전 위치 권한을 받아야합니다. 위치 권한이 없다면 운동 정보를 기록할 수 없습니다.

처음에는 앱이 켜져있을때에만 운동 기록을 받아오는 방식으로 구현했습니다. 앱 특성상 앱을 백그라운드에 둔 상태에서도 위치 정보를 받아와 최종 운동 기록을 보여줘야 하기 때문에 백그라운드에서도 기록이 멈추지 않고 기록될 수 있도록 코드를 수정했습니다.

플레이 스토어에 배포하기

코드도 수정하는데 오래걸렸지만 코드만이 문제가 아니었습니다.🫠 위치 정보 권한에 관련된 부분은 더 민감해졌기 때문에 구글 플레이 스토어에 배포하기 위해서도 추가 절차가 필요합니다. (특히 백그라운드 위치 정보를 받아오는 경우에는...)

포함된 위치 정보 권한

android.permission.ACCESS_BACKGROUND_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION

  • 앱의 목적

  • 위치 정보 액세스 (백그라운드에서 위치에 액세스하는 앱의 기능)

  • 동영상 (해당 기능을 보여주는 동영상)

image3.png

위에 적어둔 정보처럼 위치 권한을 앱 내에서 사용해야하는 이유에 대해 설명하는 부분이 필요했고 이를 설명하기 위한 영상도 추가로 첨부해야했습니다. 이 위치 정보를 사용해야만 하는 이유가 꼭! 포함되어있어야 하는 것 같더라구요. (처음에는 위치 정보를 사용하는 부분만 녹화해서 올렸는데 리젝,,,) 앱을 백그라운드에 두고 운동하는 경우에 사용자가 예상할 수 있어야 한다고 답변이 돌아왔습니다.

image4.png

그래서 TrackingService를 하나 만들어서 푸시 알림 형태로 계속 떠있을 수 있도록 구성하는 방식으로 해봤습니다! 사용자가 백그라운드에 있을때에도 기록되고 있다는 걸 알 수 있어야 하기 때문에 저는 알림창에서 보여줄 수 있는 방식을 택했습니다.

val notification = NotificationCompat.Builder(this, channelId)
	.setContentTitle("스코어에 운동 기록 중👣")
	.setContentText("운동 위치와 시간을 계속해서 기록하고 있어요")

완성된 결과물이 궁금하다면?

🤖 구글 플레이 스토어 스코어 다운로드 링크 🤖

스코어 SCORE

친구들과 함께 즐겁게 운동하며 기초 체력을 키우는 청소년 전용 운동 기록 앱 서비스

3
0

포스트

아직 포스트가 없습니다.