2013-04-20 3 views
0

Я вижу проблему с MediaPlayer, пытаясь выполнить следующую последовательность start() -> stop() -> start() для файлов MIDI, дает мне ошибку.MediaPlayer start-> stop-> start для файлов MIDI

Глядя на MediaPlayer state diagram, последовательность должна работать со следующим кодом:

void experiment() throws IllegalArgumentException, SecurityException, IllegalStateException, IOException { 
    Context context = this; 
    int resid = R.raw.teddybear; 
    String packageName = getResources().getResourcePackageName(resid); 
    Uri uri = Uri.parse("android.resource://" + packageName + "/" + resid); 
    MediaPlayer mp = new MediaPlayer(); 
    mp.setDataSource(context, uri); 
    mp.prepare(); 
    mp.start(); 
    mp.stop(); 
    mp.prepare(); 
    mp.start(); 
} 

Вот ошибка получить от вызова к второму подготовить:

java.io.IOException: Подготовить failed: status = 0xFFFFFFFD

Эта проблема не существует для других звуковых файлов.

Неужели кто-нибудь испытывает это также? Я делаю что-то неправильно?

Я не пытаюсь найти ходить вокруг - есть много :)

Вещи пробовали:

  • удаление стоп и стоп & & подготовить старт позволяет этот поток будет играть.

  • Я слышал, что MediaPlayer не сразу обновляется для своего состояния, поэтому я добавил спать между методами - все та же проблема.

  • Изменение типа файла решило проблему.

  • Простой несколько файлов MIDI дает тот же результат.

  • регистрируя OnError тоже не работал - он не был назван

Может быть, это ошибка? Спасибо.

ответ

0
  1. Как вы сказали: Изменение типа файла решило проблему.
  2. Try SoundPool
Смежные вопросы