当我添加代码附加BassBoost效果时,就会立即触发my MediaPlayer的onCompletionListener。以下是相关代码:
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()和getDuration()值,您不会知道这一点:它们都是零!
我目前的想法是,附加效果需要异步准备,但我还没有找到任何进一步的线索。
发布于 2016-02-25 01:49:12
我从另一个问题中找到了答案。如果在效果构造函数中指定音频会话,然后调用attachAuxEffect,则会失败。这样做是可行的:
BassBoost boost = new BassBoost(0, player.getAudioSessionId());
boost.setStrength((short) 1000);
// ALREADY ATTACHED IN CONSTRUCTOR ... player.attachAuxEffect(boost.getId());https://stackoverflow.com/questions/35355295
复制相似问题