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