Android 如何从Exoplayer获取audiosessionId?

Android 如何从Exoplayer获取audiosessionId?,android,media,exoplayer,Android,Media,Exoplayer,我试图在我的项目中使用Exoplayer(而不是Android的MediaPlayer)。但是,我有一个问题:获取当前音频会话的id。对于传统的MediaPlayer,调用getAudioSessionId很容易,但Exoplayer没有任何相应的方法。有人帮我吗 import com.google.android.exoplayer.util.PlayerControl; 通过传递Exoplayer实例实例化PlayerControl对象。并调用getAudioSessionId Pl

我试图在我的项目中使用Exoplayer(而不是Android的MediaPlayer)。但是,我有一个问题:获取当前音频会话的id。对于传统的MediaPlayer,调用getAudioSessionId很容易,但Exoplayer没有任何相应的方法。有人帮我吗

  import  com.google.android.exoplayer.util.PlayerControl;
通过传递Exoplayer实例实例化PlayerControl对象。并调用getAudioSessionId

PlayerControl playerControl=new PlayerControl(Exoplayer.instance);

int audioSessionId=playerControl.getAudioSessionId();

我想这就是你想要的。

这里是我用来获取音频会话id的代码片段-

  FrameworkSampleSource sampleSource = new FrameworkSampleSource(getApplicationContext(), builtUri, null);
  MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer(sampleSource, MediaCodecSelector.DEFAULT){
        @Override
        protected void onAudioSessionId(int audioSessionId) {

            // do whatever u want to do with id.
        }
    };

   exoPlayer.prepare(audioRenderer);
   exoPlayer.setPlayWhenReady(true);

从ExoPlayer2开始,
MediaCodeAudioTrackRenderer
PlayerControl
不能再用于获取AudioSessionId。相反,您应该在exoPlayer实例上设置一个
AudioRenderEventListener


编辑:

AudioRenderEventListener
现在已不推荐使用。请改用
AnalyticsListener

exoplayer.addAnalyticsListener(new AnalyticsListener() {
    /**
     * Called when the audio session id is set.
     *
     * @param eventTime      The event time.
     * @param audioSessionId The audio session id.
     */
    @Override
    public void onAudioSessionId(EventTime eventTime, int audioSessionId) {
         // do something with audioSessionId
    }
});

PlayerControl不支持这种方法,但我找到了解决方案。我使用Render class.ooooo的onAudioSessionId…如果您能为其他访问者发布一个简单的实现示例,那就更好了
Player.AudioComponent audioComponent = exoPlayer.getAudioComponent();
int audioSessionid=audioComponent.getAudioSessionId();