Медиаплеер для Android

Я пытаюсь воспроизвести звук с помощью объекта MediaPlayer, но не могу заставить его работать, несмотря на все мои усилия. Звук просто отказывается играть.

Это короткий звук, который должен воспроизводиться при прикосновении к экрану, то есть его нужно будет повторять много раз без особых задержек. Зная это, я следовал диаграмме состояний, http://developer.android.com/reference/android/media/MediaPlayer.html. Кажется, я не вижу, что именно не так с моей последовательностью вызовов методов.

MediaPlayer mp = MediaPlayer.create(this.getContext(), R.raw.select2);
try {
    mp.prepare();
    mp.start();                 
    Log.e("debug","sound played");
    }
catch(Exception e) {}
mp.stop();

person rolledback    schedule 22.12.2011    source источник
comment
Нет необходимости вызывать метод подготовки..... В первой строке он автоматически подготавливается, и вам нужно запустить проигрыватель в прослушивателе onPrepare...   -  person Ramesh Akula    schedule 22.12.2011
comment
Спасибо! Я не знал о классе OnPreparedListener. Теперь работает.   -  person rolledback    schedule 22.12.2011


Ответы (2)


Вы вызываете prepare() в медиаплеере, но create(), который вы используете, автоматически подготавливает проигрыватель, это вызывает IllegalStateException, когда вы снова пытаетесь вызвать prepare(), и вы перенаправляетесь на свой catch() (вы бы заметили это, если бы обрабатывали исключение в некоторых способ, т.е. печать трассировки стека).

person Jave    schedule 22.12.2011

MediaPlayer player = MediaPlayer.create(this.getContext(), R.raw.select2);

мы настраиваем музыкальный проигрыватель, задавая некоторые его свойства, как показано ниже

player.setWakeMode(getApplicationContext()PowerManager.PARTIAL_WAKE_LOCK);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);
player.setOnPreparedListener(this);
player.setOnCompletionListener(this);
player.setOnErrorListener(this);
try {
   player.prepare();
   player.start();                 
   Log.e("debug","sound played");
}  catch(Exception e) {}
  player.stop();
person Sanjay Bhalani    schedule 21.07.2015