새해 복 많이 받으세요, 커뮤니티!
Source: Dev.to
Introduction
이 블로그를 찾아주신 모든 분들께 인사드리며, 새해 복 많이 받으세요!
Project Overview
이 프로젝트의 최종 목표는 순수히 장식용으로 만든 애플리케이션, 즉 오디오 스펙트럼 시각화 도구입니다.
현재는 최종 애플리케이션의 개념 단계에 불과합니다.
First Learning Step
다음과 같은 간단한 애플리케이션을 구현했습니다:
- 텍스트 필드 3개
- 값을 증가시키는 버튼 1개
새해를 맞아 작은 이스터 에그를 넣었습니다: 버튼을 26번 누르면 음악이 재생됩니다.
Fields
- 첫 번째 필드 – 값이 26에 도달하면 텍스트가 바뀌고, 그때 음악이 재생됩니다.
- 두 번째 필드 – 앱이 실행된 이후 경과 시간을 표시하는 타이머(250 ms마다 업데이트).
- 세 번째 필드 – 버튼 누른 횟수를 표시하며, 이 역시 이스터 에그 트리거 역할을 합니다.
Development Details
개발은 약 이틀 정도 걸렸으며, 대부분은 도구와 SDK에 익숙해지는 데 사용되었습니다.
Devices
- Xiaomi Redmi Note 11 NFC (2022) – Android 13 (커스텀 ROM)
- Xiaomi Mi 5 (2016) – Android 14 (커스텀 ROM)
디바이스 제어는 AnyDesk (AD1)를 사용합니다. 두 디바이스 모두에서 애플리케이션이 실행되지만, 몇 가지 주의점이 있습니다.
Issues
Suspected Memory Leak
프로파일러에서 톱니 모양의 메모리 사용 그래프가 보입니다. 이는 JVM 동작 및 UI 상태 업데이트(아마 StateFlow와 관련)와 연관된 것으로 추정됩니다. 아직 가설 단계입니다.
Crash During Audio Playback
값이 26에 도달했을 때 첫 번째 오디오 재생이 끝난 뒤 앱이 크래시됩니다. 하지만 값이 26을 초과하면 크래시가 발생하지 않습니다. 대부분은 오디오 재생 프로세스를 반복적으로 재생성하는 것이 원인으로 보이며, 이를 수정해야 합니다.
Conclusion
버그(특히 치명적인 버그)도 존재하지만, 안드로이드 개발을 처음 배우는 첫 이틀 동안 만든 결과물이라 꽤 만족스럽다고 생각합니다.
관심이 있으시면 프로젝트 저장소 링크를 공유해 드릴 수 있습니다. 앞으로 유지보수나 업데이트는 할 계획이 없으며, 순수히 학습 목적의 프로젝트임을 알려드립니다.