티스토리 뷰

개발/Android

Android Audio Focus 관련

Joey_Cho 2020. 2. 17. 12:27

구급대원 폭행방지 어플을 어느정도 마무리하고 테스트하는 중간에 발생한 에러로,

잘만 실행되던 오디오가 다른 앱(예: Youtube같은 미디어플레이어를 사용하는 어플)을 사용하고나면 경고안내방송을 요청해도 소리가 나지 않는 문제가 발생했다.

Audio Focus를 관리해줬어야하는데, 우선 개념부터 확인하자면

만약 Audio Focus가 없다면 사용자가 음악앱으로 음악을 듣고 있다가 알람이 울리면 두소리가 같이 송출되어 듣기 거부감이 드는 상황이 생긴다. 그래서 음악앱이 실행되는 중에 알람이 울린다면 음악앱을 중지할 수있게 나온 것이 Audio Focus이다.

Audio Focus에는 획득이나 상실되는 상황이 생기는데 아래와같다.

획득하는 상황

상실하는 상황

AUDIOFOCUS_GAIN

AUDIOFOCUS_LOSS

AUDIOFOCUS_GAIN_TRANSIENT

AUDIOFOCUS_LOSS_TRANSIENT

AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK

AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK

포커스 변경 종류

적절한 행동

AUDIOFOCUS_GAIN

상실 이벤트 후 획득 이벤트.

애플리케이션에 의해 설정된 다른 상태가 없다면 재생을 재개한다.

예를 들어 상실 이베트 이전에 사용자가 명시적으로 일시 정지한 경우.

AUDIOFOCUS_GAIN_TRANSIENT

짧은 시간 포커스 확보 필요시 사용

AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK

해당플래그로 포커스 확보 시 포커스가 확보된 앱을 제외한 현재 미디어 재생 중인 앱의 볼륨이 줄어든다. - 기존에 재생중인 미디어의 볼륨만 줄이고싶을 때 사용

AUDIOFOCUS_LOSS

재생을 정지한다. 에셋을 해제한다.

AUDIOFOCUS_LOSS_TRANSIENT

재생을 일시정지하고 상실이 일시적이란 것의 상태를 유지한다.

AUDIOFOCUS_GAIN 이벤트가 나타나면 적절히 재생을 재개할 수 있다.

에셋을 해제하지 마라.

AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK

볼륨을 줄이거나 재생을 일시정지한다.

AUDIOFOCUS_LOSS_TRANSIENT의 상태를 저장한다. 애셋을 해제하지 마라.

요청할 때는 위의 [GAIN]에 정의된 것 중에 하나를 사용해서 요청하고, 앱의 AudioFocus를 잃었을 때는 [LOSS]에 정의한 것이 리스너에게 전달되니 거기에 맞춰서 동작해야한다.

중요한 부분만 정리해놓은 것이니 자세히 알고싶다면 아래의 참고자로를 보셈.

참고자료

http://blog.daum.net/creazier/15310433

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함