为什么onCompletionListener会立即触发附加的AudioEffect?

时间:2016-02-12 05:16:48

标签: android android-mediaplayer

当我添加代码以附加BassBoost效果时,我的onCompletionListener的{​​{1}}会立即被触发。这是相关代码:

MediaPlayer

我已经尝试了这个特定代码的顺序无济于事。最后,我在完成处理程序中记录了player.setDataSource(context, Uri.parse(song.filename)); // everything is fine if I comment out these 3 lines BassBoost boost = new BassBoost(0, player.getAudioSessionId()); boost.setStrength((short) 1000); player.attachAuxEffect(boost.getId()); player.prepare(); player.start(); getCurrentPosition()值,并且您不知道它们:它们都是零!

我目前的想法是,附加效果需要异步准备,但我还没有找到任何进一步的线索。

1 个答案:

答案 0 :(得分:0)

我从另一个被回答的问题中找到了答案。如果在效果构造函数中指定音频会话,然后调用attachAuxEffect,则会失败。这有效:

BassBoost boost = new BassBoost(0, player.getAudioSessionId());
boost.setStrength((short) 1000);
// ALREADY ATTACHED IN CONSTRUCTOR ... player.attachAuxEffect(boost.getId());