我想在我的项目中使用Exoplayer(而不是Android的MediaPlayer)。但是,我有一个问题:获取当前音频会话的ID。使用传统的MediaPlayer,通过调用getAudioSessionId很容易,但Exoplayer没有任何相应的方法。任何人都帮助我?我如何从Exoplayer获得一个audiosessionId?
1
A
回答
1
import com.google.android.exoplayer.util.PlayerControl;
通过传递您的Exoplayer实例来实例化PlayerControl对象。并调用getAudioSessionId。
PlayerControl playerControl=new PlayerControl(Exoplayer.instance);
int audioSessionId=playerControl.getAudioSessionId();
我想这就是你想要的。
1
这里是代码片段,我用来获取音频会话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);
1
由于ExoPlayer2 MediaCodecAudioTrackRenderer
和PlayerControl
不能再用于获取AudioSessionId。相反,你应该在你的exoPlayer实例上设置一个AudioRendererEventListener
。
exoPlayer.setAudioDebugListener(new AudioRendererEventListener(){
@Override
public void onAudioEnabled(DecoderCounters counters) {
}
@Override
public void onAudioSessionId(int audioSessionId) {
//TODO Do something with your AudioSessionID here
}
@Override
public void onAudioDecoderInitialized(String decoderName, long initializedTimestampMs, long initializationDurationMs) {
}
@Override
public void onAudioInputFormatChanged(Format format) {
}
@Override
public void onAudioTrackUnderrun(int bufferSize, long bufferSizeMs, long elapsedSinceLastFeedMs) {
}
@Override
public void onAudioDisabled(DecoderCounters counters) {
}
});
相关问题
- 1. 我如何获得一个NSManagedObjectID从
- 2. 我如何获得从一个子对象到另一个子
- 3. 我如何获得rowposition一个选择
- 4. 我如何获得一个OBJ标签
- 5. 我如何获得Scanner.nextInt()来获得下一个int?
- 6. 我如何从一个oracle序列通过NHibernate获得NextVal
- 7. 我如何获得价值从一个数组的java
- 8. 我如何从nvarchar获得一个数字
- 9. 我如何获得一个名单的唯一一个用户
- 10. 如何获得一个div
- 11. 如何获得一个LINQ
- 12. 如何获得一个TypeCode
- 13. 如何获得一个表
- 14. 我如何获得下一个ID在一个表中的Rails
- 15. 我如何获得一个USEMAP一个Firefox XUL文件
- 16. 如何从另一个类获得一个字符串
- 17. 如何获得价值从一个JSONObject的另一个JSONObject的
- 18. 你如何从Angular的一个元素中获得一个类?
- 19. 如何从一个字符串中获得一个类?
- 20. 如何从一个简短的URL获得一个长的URL
- 21. 如何从一个JSONArray获得最后一个对象
- 22. 我如何在Exoplayer 2中播放.ts
- 23. 从mdInput获得一个值
- 24. 如何旋转ExoPlayer
- 25. 得到缓冲数据exoplayer
- 26. 我如何从jasperserver获得报告?
- 27. 我如何从python获得C++结构?
- 28. 我如何获得的memberOf从LDAP DirContextOperations
- 29. Android:我如何从mediaplayer获得振幅?
- 30. Asana:我如何从asana获得Worksapce ID
PlayerControl不支持这种方法,但我找到了解决方案。我使用Render类的AudioSessionId。 – hunghd
Oooo ....如果你可以为其他访问者发布一个简单的实现示例会更好 –