2017-03-04 9 views
0

私は目覚まし時計アプリを開発中で、デバイスにイヤホンジャックを持っているときにexoplayerを使用するのに問題があります。私はthis solutionを見つけましたが、実際にはこれを行う信頼できる方法ではないとコメントが言っています。私はまた、誰かが同様の問題hereを持っていて、メソッドSimpleExoPlayer.setAudioStreamType()があることを発見しましたが、unfortunatelly ExoPlayer 2.0.4では動作しません。何か案は?exoPlayer 2.0をスピーカーフォンで再生する

答えて

1

申し訳ありませんが、解決策が見つかりました。 exoPlayerを作成するときは、デフォルトのレンダラー(つまりExoPlayerFactory.newSimpleInstance()の場合)を使用するか、独自のレンダラーを作成して特定の処理を行うことができます。デフォルトのオーディオレンダラー(MediaCodecAudioRenderer)の問題は、デフォルトでAudioManager.STREAM_MUSICが設定されており、ExoPlayer 2.xにはExoPlayer 1.xにそのようなメソッドがありましたが、それを変更するメソッドはありません。

自分自身のオーディオレンダラーを作成し、そのパラメータの1つとして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); 
    } 
} 
関連する問題