개발/Android

[Android] ExoPlayer를 사용하여 초간단 오디오 포커스 처리하기

도리 🐟 2021. 4. 9. 00:32

작성일: 2020.03.02


방법

ExoPlayer를 초기화할 때 handleAudioFocus 플래그 값을 true로 주면 된다.

exoPlayer.setAudioAttributes(new AudioAttributes.Builder()
        .setContentType(C.CONTENT_TYPE_MUSIC)
        .setUsage(C.USAGE_MEDIA)
        .build(), /*handleAudioFocus = */ true);

-끝-

Note

ExoPlayer와 MediaSessionConnector를 함께 쓸 때, MediaSessionConnector 내부에서 별도로 MediaSession.Callback을 정의하여 사용하고 있다. 그래서 Service 안에서 MediaSession에 Callback을 추가하더라도 해당 코드는 호출되지 않는다. MediaSessionConnector.mediaSession.setCallback(...)과 같이 MediaSessionConnector의 MediaSession 참조를 직접 얻어 Callback을 추가하면 호출되기는 한다. 하지만 이렇게 되면 MediaSessionConnector가 제공하는 동작들을 모두 사용할 수 없게 된다(MediaSessionConnector의 Callback이 불리지 않게 되기 때문에).

 

Android Developers 가이드에 나온대로 MediaSession.Callback의 onPlay, onPause 등 시점에 따라 동작을 해야한다면, MediaController의 Callback인 onPlaybackStateChanged를 통해 비슷하게 구현할 수 있다.