MediaPlayer停止播放任何内容

时间:2017-01-20 08:22:43

标签: android android-mediaplayer

我有一个游戏,我为每个声音使用单独的MediaPlayer

这是:

public class SoundSample {
    public final static String CORRECT="sounds/correct.wav";
    public final static String PASS="sounds/pass.wav";
    public final static String CLOCK_OUT="sounds/clock_out.mp3";
    public final static String ALARM="sounds/alarm.mp3";
    public final static String COUNTDOWN_TO_START="sounds/countdown_to_start.mp3";
    public final static String GO="sounds/go.mp3";
    private String assetFile;

    private MediaPlayer mediaPlayer;

    public SoundSample(String sound){
        assetFile = sound;
        try {
        AssetFileDescriptor afd = MainActivity.activity.getAssets().openFd(sound);
        mediaPlayer = new MediaPlayer();
        mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());

            mediaPlayer.prepare();
        } catch (IllegalStateException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public void play(){
        if (mediaPlayer.isPlaying()){
            mediaPlayer.stop();
        }
        mediaPlayer.start();
    }

    public void release(){
        mediaPlayer.release();
        mediaPlayer.reset();
        mediaPlayer = null;
    }

}

所以,我用

correctSound = new SoundSample(SoundSample.CORRECT);

然后  correctSound.play();

因此,在第二次使用时,它会停止在许多手机上播放,而不会再次播放。我的意思是,调试器显示mediaPlayer.start();已执行,但声音再也没有播放过。 然而,在我测试的每部Android 6手机上运行良好,所以它可能只是一个机器人6或5个问题

有什么方法可以纠正这个吗?我知道我可以使用SoundPool,但它也有一些问题

2 个答案:

答案 0 :(得分:1)

您必须重新创建媒体播放器,请尝试如下

    if (mediaPlayer.isPlaying()) {
           mediaPlayer.reset();
            mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.yourAudio);
        }

  mediaPlayer.start();

答案 1 :(得分:0)

尝试添加代码 mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);