2017-03-04 10 views
0

그래서 알람 시계 앱을 개발 중이며 장치에 이어폰 잭이있을 때 exoplayer를 사용하여 스피커폰을 사용하는 데 문제가 있습니다. 나는 this solution을 찾았지만, 주석이 말했듯이 실제로 이것을 수행하는 신뢰할만한 방법은 아닙니다. 나는 또한 누군가가 비슷한 문제가 있음을 발견했다. hereSimpleExoPlayer.setAudioStreamType() 방법이 있지만, 유감스럽게도 ExoPlayer 2.0.4에서는 작동하지 않는다. 어떤 아이디어?exoPlayer 2.0을 스피커폰으로 재생하기

답변

1

좋아, 해결책을 찾았습니다! exoPlayer를 만들 때 기본 렌더러 (즉, ExoPlayerFactory.newSimpleInstance())를 사용하거나 고유 한 렌더러를 만들어 특정 작업을 수행 할 수 있습니다. 기본 오디오 렌더러 (MediaCodecAudioRenderer)의 문제점은 기본적으로 AudioManager.STREAM_MUSIC으로 설정되어 있으며 ExoPlayer 2.x에는 변경 방법이 없습니다 (ExoPlayer 1.x에는 이러한 방법이 있지만).

나는 내 자신의 오디오 렌더러를 만들고 그 매개 변수 중 하나로 AudioManager.STREAM_ALARM을 전달해야한다는 것을 수정하기 위해. 그런 다음 ExoPlayerFactory.newInstance()을 사용하여 만든 렌더러를 전달할 수 있습니다.

다음은 스피커폰을 통해 항상 음악을 재생하는 ExoPlayer의 인스턴스를 가져 오는 데 사용할 수있는 클래스입니다. 알람 볼륨 레벨도 사용합니다.

public class AlarmExoPlayerFactory { 

    public static ExoPlayer newInstance() { 
     Renderer[] renderers = new Renderer[1]; 

     Renderer audioRenderer = new MediaCodecAudioRenderer(MediaCodecSelector.DEFAULT, null, true, 
       null, null, null, AudioManager.STREAM_ALARM); 
     renderers[0] = audioRenderer; 

     Handler handler = new Handler(); 
     TrackSelector trackSelector = new DefaultTrackSelector(handler); 
     return ExoPlayerFactory.newInstance(renderers, trackSelector); 
    } 
}