有没有办法可以在同一个实例中同时播放多个声音资源(MediaPlayer)?

时间:2016-04-02 15:58:13

标签: android android-studio android-mediaplayer android-resources

或者我是否经常要重新实施它?

我有一个声音文件,每次船只爆炸时会发生爆炸,但有时三艘或更多船只会同时爆炸,所以我希望相同的声音片段重叠。我注意到除非我创建新实例,否则它不会这样做。有什么我缺少的或者是唯一的方法吗?

//declaration
private final MediaPlayer[] explosionSound = new MediaPlayer[5];

//constructor
for (int i = 0; i < 5; i++)
{
    explosionSound[i] = MediaPlayer.create(app, R.raw.explosion);
}

//in program where I want to use it (when I want to play the sound)
for (int i = 0; i < 5; i++)
{
    if (!explosionSound[i].isPlaying())
    {
        explosionSound[i].start();
        break;
    }
}

//onDestroy() method to release the media
for (int i = 0; i < 5; i++)
{
    explosionSound[i].release();
}

我试图匿名实例化一个新的,但它抱怨它没有被释放(当你在onDestroy()方法中释放它时,错误就消失了)。我不能马上释放它,否则声音根本不会播放。我也不想把自己限制在5次爆炸中。现在我也担心记忆问题。

有更简单的方法吗?

1 个答案:

答案 0 :(得分:1)

MediaPlayer并不是真正意味着解决小而重叠的音频剪辑的问题。对于长期运行的媒体,包括音频和视频,它更为重要。

针对您的特定情况的更好工具是SoundPool,它是专为您的情况设计的。