Android:Efficent播放声音的方式

时间:2015-08-28 23:49:15

标签: android audio android-mediaplayer

这是我的代码,它更容易向您展示,然后解释:

public class Sound {
    public MediaPlayer audio;

    public Sound(Context context, int id) {
        audio = MediaPlayer.create(context.getApplicationContext(), id);
    }
}

public class ClassA {
    Sound sound = new Sound(getContext(), R.raw.audio);

    public void method() {
        //plays only once here, so its not looping, which is good
        sound.audio.start();
    }
}

所以我在这里尝试做的是有一个定义声音的类,然后允许我播放它,但是当我在手机上加载我的应用程序时,它会崩溃。

我今天刚刚开始处理声音,所以我不太了解。我不知道为什么这不起作用,我计划今天发布我的第一个应用程序。
非常感谢您的帮助!

忘了提及,我这样做的原因是我的游戏听起来并没有因为创建了很多MediaPlayers而崩溃。

1 个答案:

答案 0 :(得分:1)

对于简短的声音样本,最好使用 android.media.SoundPool

import android.content.Context;
import android.media.*;

您的活动中的任何位置

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
SoundPool soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
int soundId = soundPool.load(theContext, R.raw.audio, 1);
int streamVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int streamId = soundPool.play(soundId, streamVolume, streamVolume, 1, 0, 1f);