У меня есть игра, и я использую отдельный 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();
Итак, при втором использовании он перестает играть на многих телефонах и неве r снова воспроизвести. Я имею в виду, что отладчик показывает, что исполняется mediaPlayer.start();
, но звуки больше не воспроизводятся. это работает хорошо, однако, на каждом Android 6 телефона я тестировал, так что это, вероятно, только андроид 6- или 5- вопрос
Есть ли способ, что я могу это исправить? Я знаю, что могу использовать Soundpool, но он также имеет некоторые проблемы
о, вы имеете в виду, установить источника данных каждый раз? не так ли .. слишком много работы для быстрых звуков? – user2976267
Это правильно. Я просто хочу добавить к этому ответу. @ user2976267 вам действительно нужен MediaPlayer? Наличие нескольких отдельных «MediaPlayers» будет тяжелым для системы. Если ваш звук невелик, вы можете использовать SoundPool для обработки многих небольших звуковых файлов. – Ekalips
@ user2976267 прочитайте это http://stackoverflow.com/questions/13527134/audiotrack-soundpool-or-mediaplayer-which-should-i-use (anvers) Элвиса Поповича) – Ekalips