Java Mobile Media API - Java Mobile Media API

В Mobile Media API (MMAPI) является API спецификация для Java ME Платформа CDC и CLDC такие устройства, как мобильные телефоны. В зависимости от того, как это реализовано, API-интерфейсы позволяют приложениям воспроизводить и записывать звуки и видео, а также захватывать неподвижные изображения. MMAPI был разработан под Процесс сообщества Java как JSR 135.

Концепции программирования

Мультимедийный Java API основан на четырех основных типах классов в javax.microedition.media пакет - Управляющий делами, то Игрок, то PlayerListener и различные виды Контроль.

Программисты Java ME, желающие использовать JSR 135, сначала использовали бы статические методы Управляющий делами класс. Хотя есть и другие методы, такие как playTone, основным используемым методом является createPlayer. Это требует либо URI или InputStream, а Тип MIME. В большинстве случаев используются URI. Общие используемые протоколы URI включают:

  • файл:
  • ресурс: (который может извлекать файл из JAR мидлета, но зависит от реализации)
  • http:
  • rtsp:
  • захват: (используется для записи аудио или видео)

Тип MIME является необязательным и выводится из переданных данных, если не указан.

В createPlayer метод возвращает реализацию Игрок интерфейс (даже если вы используете захватить: протокол URI). У этого есть основные методы, которые применимы ко всем проигрывателям, такие как запуск и остановка мультимедиа, а также запрос цикла. Вы также можете setPlayerListener объекту, реализующему PlayerListener интерфейс, который будет получать различные события, связанные с клипом (запуск, остановка, окончание медиа и т. д.)

Игрок классы также имеют getControl метод, который возвращает реализацию определенного Контроль. А Контроль обрабатывает любые дополнительные API, которые не применимы ко всем типам мультимедиа. Любой данный Игрок может или не может предоставить реализацию любого данного Контроль.

(Обычно Контроль вернулся на самом деле Игрок сам по себе, но это не гарантируется.)

Набор элементов управления, реализованный Игрок не ограничен; однако некоторые стандартные определены в javax.microedition.media.control пакет JSR:

Стандартные элементы управления MMAPI
Интерфейс управленияОписание
FramePositioningControlЭлемент управления видеоданными, позволяющий получить доступ к отдельным кадрам.
GUIControlЭлемент управления для данных, требующих отображения, например видео.
MetaDataControlИспользуется для определения информации метаданных, хранящейся в потоке мультимедиа, например названия, авторских прав, автора и т. Д.
MIDIControlПолнофункциональный элемент управления, обеспечивающий доступ к MIDI-плееру устройства.
Управление по каналу тангажаИспользуется для управления высотой звука (частотой) аудиоданных.
RateControlИспользуется для управления скоростью воспроизведения проигрывателя.
RecordControlПозволяет управлять записью данных с устройства захвата, например видео с камеры или звука с устройства записи звука.
StopTimeControlЭлемент управления, который позволяет вам установить предустановленное время, когда вы хотите, чтобы проигрыватель прекратил воспроизведение.
TempoControlПодобно RateControl, этот элемент управления позволяет вам изменять темп (скорость) воспроизведения для аудиоплеера, обычно MIDI-проигрывателя.
ToneControlПолнофункциональный элемент управления, позволяющий воспроизводить монотонные последовательности тонов.
VideoControlРасширяет GUIControl и управляет отображением видео.
Контроль громкостиСамый простой элемент управления, позволяющий регулировать громкость звука в Игрок.

(Другие могут быть определены в JSR 234 (Расширенные мультимедийные приложения ).

Подмножество JSR 135 определено в JSR 118 (MIDP 2.0).

Жизненный цикл игрока

Независимо от протокола или типа носителя, Игрок проходит через одни и те же дискретные состояния в течение своего жизненного цикла. Эти состояния перечислены в таблице ниже.

Состояния жизненного цикла экземпляра Player
государствоОписание
НереализованныйНачальное состояние при создании Player. В этом состоянии у плеера недостаточно информации, чтобы получить необходимые ресурсы для обработки мультимедиа.
РеализованоИгрок переходит в состояние «Реализовано» после того, как получит необходимую информацию для приобретения ресурсов. В этом состоянии, вероятно, большая часть ресурсов уже приобретена для работы. Однако некоторые ресурсы могут не быть получены на этом этапе, особенно если есть системные зависимости, например, с аудио- или видеодрайвером, где должен быть получен монопольный доступ.
Предварительно выбраноИгрок переходит в состояние Prefetched после того, как будут получены все ресурсы, включая дефицитные и системные ресурсы. Находясь в состоянии Prefetched, игрок имеет все необходимое для выполнения своих задач.
НачалPlayer в состоянии Started указывает, что контент, связанный с Player, обрабатывается.
ЗакрытоИгрок переходит в состояние Closed в конце своего жизненного цикла. Игрок в закрытом состоянии больше не может быть использован.

Реализации

Как и в большинстве спецификаций Java ME, реализации отличаются, несмотря на все усилия авторов спецификации по обеспечению согласованности. Две очевидные области различий заключаются в поддерживаемых элементах управления и в первую очередь в допустимых типах URI. Более неясные области: смешивание поддерживается; многие игры хотели бы воспроизвести музыкальную дорожку и слой MIDI PCM звуковые эффекты на высоте.

Еще один источник крайних различий - производительность. Например, если HTTP клип запрашивается, в какой момент клип загружается? Спецификация признает это, предоставляя два Игрок методы, которые можно вызвать до начала игры: понимать и предварительная выборка. В зависимости от реализации они могут выполнять некоторую часть работы по переводу клипа в состояние воспроизведения, тем самым ускоряя фактическое воспроизведение клипа, когда это необходимо. Некоторые реализации достаточно сложны, чтобы транслировать клип по запросу во время его воспроизведения.

ОС Symbian содержит очень полную реализацию JSR 135, но даже это сильно зависит от основных мультимедийных возможностей устройства, и некоторые производители устройств могут решить не раскрывать более непонятные части Java ME, такие как запись.

Согласованность реализации обеспечивается путем принудительного прохождения всеми реализациями кода Java Комплект совместимости технологий (TCK). Это гарантирует, что проверяется каждая поддерживаемая схема URI, тип MIME и элемент управления, но не проверяет каждую перестановку этих необязательных частей.

Пример кода

пакет org.wikipedia;импорт javax.microedition.midlet. *;импорт javax.microedition.media. *;общественный класс SimplePlayer расширяет Мидлет {     защищенный пустота уничтожить приложение(логический arg0) бросает MIDletStateChangeException {}     защищенный пустота pauseApp() {}     защищенный пустота startApp() бросает MIDletStateChangeException {          пытаться {               Строка url = "http://upload.wikimedia.org/wikipedia/commons/a/a0/Bass_sample.mid";               Игрок игрок = Управляющий делами.createPlayer(url);               игрок.Начните();          } ловить (Исключение е) {               е.printStackTrace();          }     }}

Смотрите также

Список используемой литературы

  • Гоял, Викрам (1 мая 2006 г.). Pro Java ME MMAPI: Mobile Media API для Java Micro Edition (1-е изд.). Apress. п. 250. ISBN  1-59059-639-0.

внешние ссылки