Работа с аудио в приложениях для 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 для выполнения переключения на следующий трек после завершения воспроизведения текущего трека:
Проверить состояния воспроизведения медиаплеера можно с помощью метода isPlaying().
Получить текущую позицию воспроизведения трека можно с помощью метода getCurrentPosition(), метод возвращает позицию в милиисекундах.
Если вы реализуете потоковое проигрывание аудиофайлов, то вам стоит использовать обработчик для события oncompletion для выполнения переключения на следующий трек после завершения воспроизведения текущего трека:
mediaPlayer.setOnCompletionListener(new OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer mp) {
//Запускаем на воспроизведение следующий трек
}
});
Также важно учесть, что при переключении на другой трек нужно сбрасывать состояние медиаплеера на изначальное с помощью метода reset().
При выходе с экрана проигрывания аудио рекомендуется завершать работу с медиаплеером с помощью метода release():
При выходе с экрана проигрывания аудио рекомендуется завершать работу с медиаплеером с помощью метода release():
public void onDestroy(){
super.onDestroy();
this.mediaPlayer.release();
}
Удачного программирования с использованием аудио в Android.