我有一个游戏,我为每个声音使用单独的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,但它也有一些问题
答案 0 :(得分:1)
您必须重新创建媒体播放器,请尝试如下
if (mediaPlayer.isPlaying()) {
mediaPlayer.reset();
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.yourAudio);
}
mediaPlayer.start();
答案 1 :(得分:0)
尝试添加代码
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);