Главная » Разработка для Android » МУЛЬТИМЕДИА в Android приложении

0

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

АУДИО И ВИДЕО

Android поддерживает воспроизведение большинства популярных форматов аудио и видео. Кроме того, система позволяет записывать медийную информацию в нескольких форматах. Записи сохраняются в файлах, при необходимости их можно переносить в долговременное хранилище медийной информации. MediaStore – это специальный поставщик содержимого в Android, обеспечивающий сохранение и совместное использование медийных данных, например изображений, видео и аудио. После того как метаданные, ассоциированные с медиафайлами, оказываются в этом поставщике содержимого, их могут использовать другие приложения.

На момент написания книги большинство устройств Android, имеющихся на рынке, поддерживают следующие аудио- и видеоформаты. Обратите внимание на то, что производители устройств могут добавлять и поддержку других форматов, не перечисленных здесь.

Аудио:

• ААС LC/LTP *;

• HE-AACvl (ААС+);

• HE-AACV2 (улучшенный ААС+);

• AMR-NB *;

• AMR-WB *;

• МРЗ;

• MIDI;

• Ogg Verbis;

• PCM/WAVE. О Видео:

• H.263*;

• H.264AVC;   .

• MPEG-4 SP.

Звездочка (*) указывает форматы, для которых поддерживается кодировка. Для всех остальных форматов поддерживается только декодировка.

Более подробная актуальная информация приводится на сайте разработчиков Android по адресу http://developer.androidxom/guide/appendix/media-formats.html.

ВОСПРОИЗВЕДЕНИЕ АУДИО И ВИДЕО

Android предоставляет стандартное средство для воспроизведения аудио и видео: класс MediaPlayer. При работе с аудиоконтентом этот класс позволяет воспроизводить и необработанные данные. Такая возможность очень полезна в сложных приложениях, где аудио генерируется динамически.

В ходе жизненного цикла MediaPlayer проходит несколько этапов:

бездействие (idle) – инстанцирован MediaPlayer;

инициализирован (initialized) – установлен источник медийной информации;

приготовление (preparing) – MediaPlayer готовит медиаисточник к воспроизведению;

приготовлен (prepared) – MediaPlayer готов к воспроизведению;

запущен (started) – воспроизведение идет;

приостановлен (paused) – воспроизведение приостановлено;

воспроизведение завершено (playback complete) – воспроизведение исходной информации завершено (и его можно начать заново);

остановлен (stopped) – MediaPlayer не готов к воспроизведению исходной информации;

конец (end) – MediaPlayer больше не работает, и связанные с ним ресурсы освобождаются.

Более глубокое представление об этих состояниях позволяет составить диаграмма состояний, приведенная на сайте разработчиков Android по адресу http://developer. android.eom/reference/android/media/MediaPlayer.html#StateDiagram. Перед тем как начать работу с MediaPlayer, будет полезно рассмотреть серию этапов, происходящих в вашем приложении.

1. Создание экземпляра MediaPlayer при помощи метода create() (состояние бездействия).

2. Инициализация MediaPlayer с медийным источником, который следует воспроизвести (инициализированное состояние).

3. Подготовка MediaPlayer к воспроизведению при помощи метода ргерагеО (состояние приготовления и готовности).

4. Воспроизведение MediаРlауеr при помощи метода start () (рабочее состояние).

5. В ходе воспроизведения по желанию можно приостановить, остановить окончательно или повторно воспроизвести MediaPlауеr (рабочее состояние, состояния паузы, завершения воспроизведения и остановки работы).

6. После того как работа будет завершена, обязательно высвободите ресурсы, ассоциированные с MediaPlауеr. Для этого вызывается метод release() (конечное состояние).

В следующих разделах эти этапы рассматриваются более подробно.

Воспроизведение аудио

Для воспроизведения аудио можно воспользоваться одним из двух методов – Medi aPl ауег и Audi oTrack. Medi aPl ауег – это стандартный, простой способ воспроизведения. Его данные должны быть потоковыми или находиться в файле. Audi oTrack, Напротив, обеспечивает прямой доступ к необработанным аудиоданным, расположенным в памяти.

Воспроизведение аудио при помощи MediaPlayer

Начиная работать с Medi а PI ауег, необходимо определить, будем ли мы использовать файл, расположенный в каталоге с ресурсами приложения. Если мы собираемся сделать именно так, то в MediaPlayer есть удобный статический метод, который задает источник данных и готовит плеер к работе:

MediaPlayer mediaplayer = MediaPlауег.create(this, R.raw.example);

Если вы не используете ресурс приложения, то есть, например, ссылаетесь на аудиофайл, находящийся в файловой системе (карта памяти и т. п.) или на сайте (допустим, по адресу http://SomeServer/SomeAudioFile.mp3), то вам придется вручную задать источник данных и вызвать его. Данные можно взять по уникальному идентификатору, сделав такой вызов:

setDataSource(context, uri)

Контекст, который задается в первом аргументе, позволяет Medi aPl ауег получить доступ к ресурсам самого приложения и, как следствие, дает возможность получить данные по URI. Подойдет как контекст приложения, так и контекст активности.

Другой вариант – указать абсолютный путь к файлу при помощи:

setDataSource(pat/7)

API версии 9 позволяет добавить к плееру некоторые дополнительные эффекты (например, реверберацию). Можете задавать любые звуковые эффекты на этапе установки источника данных до вызова метода ргерагеО:

После того как MediaPlayer будет подготовлен, можно начинать воспроизведение:

mediaplayer.startO;

Во время воспроизведения плеер можно поставить на паузу или остановить вообще. Чтобы возобновить воспроизведение из состояния паузы, достаточно просто снова вызвать start (). Когда MediaPlayer остановлен вообще, его можно вновь запустить только после повторной активации методом reset О, который заново выполняет инициализацию с источником данных, как это было показано выше, и задействует метод ргераге(). Рассмотрим следующий код:

Пока MediaPlayer проигрывает аудио, вы можете отслеживать, в какой точке файла сейчас происходит воспроизведение, при помощи метода getCurrentPosi tion(). Этот метод возвращает количество времени, которое прошло с начала воспроизведения, в миллисекундах:

medi арі ayer. getCurrentPositionO ;

После того как MediaPlayer больше не будет вам нужен, обязательно освободите связанные с ним ресурсы, чтобы система снова могла ими пользоваться:

mediаріayer.release();

Воспроизведение аудио при помощи AudioTrack

AudioTrack обеспечивает значительно более прямой метод воспроизведения аудио. В следующем примере показаны параметры, необходимые, чтобы настроить

AudioTrack:

Метод Audi оТгаск позволяет задать тип потока аудио (музыка, звонок, будильник, голосовой вызов и т. д.), частоту образца в герцах (44100, 22050, 11025), конфигурацию аудио (моно или стерео), формат и кодировку аудио, длину аудио, выраженную в байтах, а также режим (статический или потоковый). Экземпляр класса AudioTrack в Android достаточно один раз сконфигурировать, и он автоматически будет распознавать, как взаимодействовать с оборудованием устройства, обеспечивая максимально удобную работу с медиа.

Для воспроизведения аудио выполняется метод pi ау(), и данные считываются с устройства в буфер:

Чтобы приостановить воспроизведение, используйте метод pause():

Чтобы остановить воспроизведение, переведите дорожку в состояние «остановлено». Если эта дорожка вам больше не нужна, освободите ее. В противном случае, если потребуется вновь воспроизвести аудио, сначала его нужно будет повторно инициализировать:

Воспроизведение видео

Воспроизведение видео в отличие от воспроизведения аудио осуществляется только при помощи MediaPlayer. Видеоэквивалента для Audi оТгаск не существует. Видео работает с MediaPlayer примерно так же, как и аудио, но вы должны дополнительно указывать вид (называемый поверхностью), на котором видео будет отображаться. В Android предоставляется удобный элемент управления, в котором уже есть собственная поверхность: вид VideoView. Ниже мы покажем, как им пользоваться. В этом примере будет описано добавление опционального контроллера, который позволяет пользователю управлять воспроизведением при помощи простого интерфейса. В этом интерфейсе есть кнопки для запуска, остановки и приостановления воспроизведения, а также имеется ползунок, позволяющий переходить вперед или назад по мере воспроизведения видео:

Источник: Android. Программирование на Java для нового поколения мобильных устройств

По теме:

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