Android:改组音乐 - 我应该为每首歌创建一个新服务吗?

时间:2012-02-12 15:11:52

标签: android service media-player

我有一个支持改组的应用程序。我不确定是否应该为每首歌创建一个新服务并销毁之前的歌曲?

为什么我这样想是因为目前我用一个媒体播放器在一个服务中洗牌。然而,这首歌应该停在中间的某个地方,下一首歌应该开始播放 - 但现在我可以听到它们两个,尽管我只有一个MediaPlayer。我怀疑我的淡入淡出功能出了问题,但是管理它自己的服务中的每个音轨会更容易。

1 个答案:

答案 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实例。

请仔细再次查看您的代码:)