为我的Android应用程序播放声音

时间:2012-08-22 20:44:56

标签: android audio

我正在尝试加载特定事件发生时播放的声音效果。

出于某种原因,我可以听到声音,但它不会播放整个文件,而是在中间刹车。

我的声音代码:

public class SoundManager {

    private Context context;
    private int nudgeSound = R.raw.nudge;


    public SoundManager(Context context)
    {
        this.context = context;
    }

    public void playNudgeSound()
    {           
        final MediaPlayer mediaPlayer = MediaPlayer.create(context, nudgeSound);

          mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

              @Override
              public void onCompletion(MediaPlayer mp) {
                  mediaPlayer.reset();
              }

          });   
          mediaPlayer.start();

    }
}

我的初始化:

    SoundManager soundManager = new SoundManager(this);
    soundManager.playNudgeSound();

2 个答案:

答案 0 :(得分:3)

好几天后,我想知道我的问题是MediaPlayer.create()没有太多时间将文件加载到内存中... 之所以发生这种情况,是因为几乎同时调用了create()和start()。

我的建议是在加载应用程序时加载所有声音文件,并在需要时调用start()。构建某种SoundManager类。

谢谢大家!希望它会帮助别人!

答案 1 :(得分:2)

你有没有考虑过使用SoundPool?!在我的应用程序中,这很好。

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION);

SoundPool soundPool = new SoundPool(10, AudioManager.STREAM_NOTIFICATION, 0);
int sound = soundPool.load(context, R.raw.beep, 1);
soundPool.play(sound, maxVolume, maxVolume, 1, 0, 1f);