Главная » Разработка для Android » Подготовка аудиоданных к воспроизведению

0

Есть немало  способов, с помощью  которых  можно воспроизводить аудиоданные в Медиапроигрывателе. Вы можете включать эти данные в виде ресурса приложения, проигрывать их из локальных  файлов,  Источников данных или сетевых потоков через удаленный  адрес URL.

Упаковка аудиофайла в виде ресурса приложения

Вы можете включать аудиофайлы в дистрибутив своего приложения —

в каталог res/raw иерархии ресурсов.

Во время упаковки  в приложение необработанные ресурсы не сжима- ются и никак  не изменяются. В связи  с этим данный  способ идеален  для хранения  предварительно сжатых данных, таких как звуковые файлы.

Чтобы  получить  доступ к необработанному ресурсу, используйте имя файла в нижнем регистре без расширения, как показано в листинге 11.1.

Инициализация аудиоданных для воспроизведения

Чтобы  начать воспроизведение аудиоданных  с помощью  Медиапро- игрывателя, необходимо  создать объект MediaPlayer и назначить  для него источник с мультимедийной информацией (в нашем случае с аудио).

Для воспроизведения аудио с помощью Медиапроигрывателя вы можете использовать статический метод create,  передавая  ему в качестве  пара- метров Контекст приложения, а также одно из следующих  значений  (как показано в листинге 11.1):

идентификатор ресурса;

путь URI к локальному файлу (используя схему file://);

путь URI  к удаленному  ресурсу с аудио, предоставленному в виде

URL;

путь URI к записи внутри локального  Источника данных.

Обратите  внимание,  что для объекта MediaPlayer, возвращаемого ме- тодом create, уже был вызван метод prepare. Важно, чтобы вы не вызвали его повторно.

Листинг 11.1. Инициализация аудиоданных  для воспроизведения

Context appContext = getApplicationContext();

MediaPlayer resourcePlayer = MediaPlayer.create(appContext, R.raw.my_audio);

MediaPlayer filePlayer = MediaPlayer.create(appContext, Uri.parse("file:///sdcard/localfile.mp3"));

MediaPlayer urlPlayer = MediaPlayer.create(appContext, Uri.parse("http://site.com/audio/audio.mp3"));

MediaPlayer contentPlayer = MediaPlayer.create(appContext, Settings.System.DEFAULT_RINGTONE_URI);

В качестве альтернативного можно использовать метод setDataSource из уже созданного экземпляра MediaPlayer. В виде единственного параметра этот метод может принять путь к файлу, путь URI к Источнику данных, адрес URL мультимедийного потока или файловый дескриптор.

Используя данный  подход, важно не забыть вызвать  метод prepare  из объекта MediaPlayer, прежде чем начинать воспроизведение, как показано в листинге 11.2.

Листинг 11.2. Использование методов setDataSource и prepare для инициализации воспроизведения аудио

MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setDataSource("/sdcard/test.3gp"); mediaPlayer.prepare();

ПРИМЕЧАНИЕ

Если вы передаете адрес URL, который ссылается на файл в Интернете, удаленный сервер должен поддерживать последовательную загрузку с помощью протоколов RTSP или HTTP.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии