피드로 돌아가기
I built a free Android soundboard that works with a External keyboard
Dev.toDev.to
Mobile

I built a free Android soundboard that works with a External keyboard

개발자가 Java 기반 네이티브 Android 앱으로 물리 키보드 매핑형 사운드보드를 구현해 구독료·계정·지연 없는 오프라인 음성 트리거 실현

anoop p2026년 3월 25일5intermediate

Context

라이브 세션용 사운드보드가 필요했으나 기존 앱들은 구독 기반이거나 계정 필수, 또는 물리 키보드 지원이 없었다.

Technical Solution

  • 키 매핑 시스템: A-Z 및 0-9 총 36개 키에 기기 내 음성 파일 할당
  • 듀얼 입력 방식: 온스크린 탭과 Bluetooth 물리 키보드 동시 지원
  • 아키텍처 단순화: Activity만 사용하며 Fragment와 Navigation component 미적용
  • 데이터 영속성: SQLite 핸드롤 OpenHelper로 키 매핑 저장, SharedPreferences로 UI 설정(그리드 크기, 컬럼 수) 관리
  • 메모리 누수 방지: 각 키프레스마다 새 MediaPlayer 생성 전 이전 플레이어 즉시 release, setOnCompletionListener로 재생 완료 후 자동 해제
  • 설정 내보내기: 전체 레이아웃을 단일 JSON 파일로 직렬화, takePersistableUriPermission()으로 재부팅·재설치 후에도 유지

Key Takeaway

Android 기기 입력 제어가 필요한 환경에서 Fragment 없는 Activity 기반 단일 모듈 설계와 MediaPlayer 생명주기를 명확히 관리하면 낮은 복잡도로 안정적인 다중 입력 처리가 가능하다.


Android 앱에서 물리 키보드 이벤트 처리를 구현할 때 각 작업마다 새로운 MediaPlayer를 생성하되 이전 인스턴스를 명시적으로 release하고 setOnCompletionListener로 자동 정리를 등록하면 메모리 누수 없이 즉각적인 음성 재생을 실현할 수 있다.

원문 읽기