Source

Project : https://github.com/agfalcon/lbs_newrun

📖 상세 내용

앱 아키텍처 앱 예제 앱 예제 앱 예제 앱 예제 앱 예제 앱 예제 앱 예제

🐷
팀 프로젝트로 진행된 프로젝트입니다. 달리기 애플리케이션 New run은 달리기를 진행하고 보상으로 달린 경로와 사용자가 원하는 키워드를 통해 이미지를 보상으로 주는 앱입니다. 청소년들의 운동 부족 문제가 OECD 국가 중 가장 심각하여 가장 간단한 운동인 달리기와 예측하지 못한 보상에 흥미를 느끼는 가변 보상 효과를 접목하여 아이디어를 고안해냈습니다. 최신 기술인 Stable Diffusion에 이미지를 조건으로 주기 위해 Control Net 모델을 사용하였으며, 사용자는 여러 가지 기능을 통해 재밌게 달리기를 할 수 있습니다.

🛠️ 사용 기술 및 라이브러리

- Kotlin, Android
- Google Maps
- Retrofit2
- kizitonwose
- Firebase, Kakao SDK, Naver oauth
- Figma, Postman, GitHub
- Flask
- Stable Diffusion & Control Net

📱 담당한 기능(Android)

- Figma를 활용하여 앱 디자인
- 홈 화면 기능
- 달리기 기능
- Custom Calendar를 활용한 기록 기능
- 전체 API 통신
- 전체 아키텍처 설계

📱 담당한 기능(Stable Diffusion API)

- Control Net WEBUI 오픈소스를 API로 쓸 수 있게 변경
- Flask Server를 통한 이미지 생성 API 기능

그 외

- 데이터베이스 스키마 설계

💡 고민한 점

- 달리기 기능에서 백그라운드에서 지속적으로 gps 정보를 받아서 연산 처리가 필요하여 Service를 도입. Background Service의 생명주기에 대해 이해하였고, command에 따라 service의 동작을 제어하는 것을 경험함.
- Service에서 연산 처리한 데이터를 액티비티에서 활용할 필요가 있었음. 4대 컴포넌트 중 하나인 Broadcase Receiver의 동작에 대해 이해하고 이를 통해 서비스에서 다양한 액티비티와 통신할 수 있도록 구현.
- 달리기 데이터에 대한 처리를 위해 서버 담당자와 많은 고민을 함. 경로 데이터에 대한 처리를 DB에서 제공하는 공간 데이터 활용 및 안드로이드에서는 경로 좌표를 제공받지 않고 경로 이미지로 받아서 처리할 수 있도록 구현
- Stable Diffusion 모델이 너무 커서 클라우드 서버에 넣을 수 없는 문제 발생. Stable Diffusion 구동 웹 서버를 통해 이미지를 생성할 수 있도록 하고 이를 flask 서버에서 요청하고 앱으로 전달할 수 있도록 구현.