Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

Концепции программирования [ править ]

Мультимедийный Java API основан на четырех основных типах классов в javax.microedition.media пакете - Managerthe Player, the, the PlayerListenerи различных типах Control.

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

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

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

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

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

(Как правило, на Controlсамом деле возвращается сам Playerобъект, но это не гарантируется.)

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

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

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

Жизненный цикл игрока [ править ]

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

Реализации [ править ]

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

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

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

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

Пример кода [ править ]

пакет  org.wikipedia ;import  javax.microedition.midlet. * ; import  javax.microedition.media. * ;открытый  класс  SimplePlayer  расширяет  MIDlet  {  protected  void  destroyApp ( boolean  arg0 )  бросает  MIDletStateChangeException  {} protected  void  pauseApp ()  {} protected  void  startApp ()  выдает  исключение MIDletStateChangeException  {  попробуйте  {  String  url  =  "http://upload.wikimedia.org/wikipedia/commons/a/a0/Bass_sample.mid" ;  Игрок  player  =  Менеджер . createPlayer ( URL );  игрок . start ();  }  catch  ( исключение  e )  {  e . printStackTrace ();  }  } }

См. Также [ править ]

  • Расширенные мультимедийные приложения

Библиография [ править ]

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

Внешние ссылки [ править ]

  • JSR 135
  • Обзор Mobile Media API