피드로 돌아가기
Dev.toFrontend
원문 읽기
Android Audio Focus: 강제 제어 대신 협력적 신호를 통한 오디오 중재 설계
The Honour System Running Your Phone's Speaker
AI 요약
Context
다수의 앱이 단일 스피커 자원을 공유하는 환경에서 발생하는 오디오 충돌 문제 해결 필요. 시스템이 일방적으로 제어권을 박탈할 경우 각 앱의 콘텐츠 특성(팟캐스트, 배경음 등)에 맞는 정교한 대응이 불가능한 한계 존재.
Technical Solution
- AudioManager를 통한 Audio Focus 요청 기반의 협력적 중재 모델 채택
- 시스템이 권한을 강제로 회수하지 않고 상태 변경을 알리는 Advisory 방식의 통신 구조 설계
- OnAudioFocusChangeListener 인터페이스를 통해 세분화된 중단 사유(Loss, Transient, Duck) 전달
- AUDIOFOCUS_LOSS 신호로 영구적 권한 상실을 알리고 앱 스스로 재생 중단 결정 유도
- AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK를 통해 일시적 볼륨 감소(Ducking) 처리로 사용자 경험 유지
- 앱 내부 로직에 중단 시점과 복구 시점의 결정권을 부여하여 컨텍스트 기반의 유연한 처리 구현
실천 포인트
1. 오디오 관련 기능 구현 시 AudioManager.requestAudioFocus를 통한 명시적 권한 요청 여부 확인
2. Loss, Transient, Duck 등 신호별 대응 시나리오를 정의하여 비정상적인 재생 중단 방지
3. 외부 라이브러리 사용 시 기본 Audio Focus 요청 설정이 서비스 기획 의도와 일치하는지 검증