четверг, 28 марта 2013 г.

Проигрывание аудио на устройстве Android

Работа с аудио в приложениях для Android не представляет особых трудностей. Можно воспроизводить аудио треки, хранящиеся в памяти устройства или с удаленного сервера, правда в последнем случае возможны проблемы с производительностью приложения при низкой скорости сетевого подключения (например, GSM), связанные с необходимостью загрузки трека на устройство при его воспроизведении.
Для реализации проигрывания аудио в приложении необходимо использовать пакет android.media. Главный класс, необходимый для работы с воспроизведением аудио - MediaPlayer. Данный класс предоставляет набор методов по управлению воспроизведением аудио:
  • start() - запуск воспроизведения аудио,
  • pause() - приостанавливает воспроизведение аудио,
  • stop() - завершает воспроизведение.
Для того, чтобы воспроизвести аудио трек из файла-ресурса в приложении нужно написать простой код:

MediaPlayer mediaPlayer;
mediaPlayer = MediaPlayer.create(this, R.raw.mediatest);
mediaPlayer.start();

В случае, если вы хотите проиграть трек с удаленного ресурса нужно немного изменить код:

MediaPlayer mediaPlayer = new MediaPlayer();

try {
   mediaPlayer.setDataSource(trackUrl);


   mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
       @Override
       public void onPrepared(MediaPlayer arg0) {
          arg0.start(); //Запускаем на воспроизведение
       }    
   });

   mediaPlayer.prepare();
   


Здесь мы с помощью метода setDataSource задаем источник аудио, затем устанавливаем обработчик на событие prepared для определения момента, когда медиаплеер будет готов к воспроизведению и с помощью метода prepare блокируем медиаплеер от воспроизведения до тех пор, пока он не будет готов.
Проверить состояния воспроизведения медиаплеера можно с помощью метода isPlaying().
Получить текущую позицию воспроизведения трека можно с помощью метода getCurrentPosition(), метод возвращает позицию в милиисекундах.
Если вы реализуете потоковое проигрывание аудиофайлов, то вам стоит использовать обработчик для события oncompletion для выполнения переключения на следующий трек после завершения воспроизведения текущего трека:

mediaPlayer.setOnCompletionListener(new OnCompletionListener(){
       @Override
       public void onCompletion(MediaPlayer mp) {
          //Запускаем на воспроизведение следующий трек
       }    
   });



Также важно учесть, что при переключении на другой трек нужно сбрасывать состояние медиаплеера на изначальное с помощью метода reset().
При выходе с экрана проигрывания аудио рекомендуется завершать работу с медиаплеером с помощью метода release():

public void onDestroy(){
   super.onDestroy();
   this.mediaPlayer.release();
}


Удачного программирования с использованием аудио в Android.

Комментариев нет:

Отправить комментарий