我有一个支持改组的应用程序。我不确定是否应该为每首歌创建一个新服务并销毁之前的歌曲?
为什么我这样想是因为目前我用一个媒体播放器在一个服务中洗牌。然而,这首歌应该停在中间的某个地方,下一首歌应该开始播放 - 但现在我可以听到它们两个,尽管我只有一个MediaPlayer。我怀疑我的淡入淡出功能出了问题,但是管理它自己的服务中的每个音轨会更容易。
答案 0 :(得分:0)
您使用的是SoundPool
吗?它看起来像这样:
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
上面的数字5意味着最多可以同时运行5个流。所以。你只需要改变5比1。
如果你使用其他功能。在其方法的构造函数中,您应该注意参数的名称,如maxStream
当然,某些东西取决于你的代码,例如,如果你喜欢这样:
public void onSufftle(){
String musicfile = Random(...); //your random algorithm to sufftle music
AssetManager assetManager = getAssets();
AssetFileDescriptor descriptor = assetManager.openFd(musicfile); mediaPlayer.setDataSource(descriptor.getFileDescriptor(),descriptor.getStartOffset(),descriptor.getLength());
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.prepare();
mediaPlayer.start();
当然,如果您的代码是这样的,那么每个新音乐都是新服务,因为您声明了一个新的MediaPlayer实例。
请仔细再次查看您的代码:)