Mobile Media API

Mobile Media API

Mobile Media API (MMAPI, JSR-135) — набор классов для J2ME, который позволяет проигрывать звук и видео; часть MIDP 2.0.

Содержание

Назначение

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

Поддерживаемые форматы

MIDP 2.0 требует, чтобы телефон играл тоновые звуки и звуки в формате WAV. Проигрывание остальных форматов (MIDI, MP3, AMR, 3GP, MPEG-4, MMF, iMelody) необязательно. Тем не менее, на всех телефонах де-факто проигрывается MIDI.

Важнейшие классы

Классы MMAPI находятся в пакете javax.microedition.media.

Класс Manager служит для создания плееров. Все плееры имеют интерфейс Player. В составе MMAPI есть и другие классы и интерфейсы, которые служат для управления громкостью, реакции на события и т. д.

Пять состояний плеера

Плеер имеет пять состояний:

  • UNREALIZED (только что созданный);
  • REALIZED (загруженный);
  • PREFETCHED (готовый к проигрыванию);
  • STARTED (в состоянии проигрывания);
  • CLOSED (плеер больше не нужен).

Только что созданный функцией Manager.createPlayer() плеер находится в состоянии UNREALIZED.

Функция realize() загружает все ресурсы, нужные для проигрывания, за исключением «ценных и дефицитных» (в частности, читает файл или связывается с сервером). Плеер переводится из состояния UNREALIZED в состояние REALIZED. Вызов функции realize() может занимать некоторое время.

Функция prefetch() загружает «ценные и дефицитные ресурсы»; плеер переходит из состояния UNREALIZED или REALIZED в состояние PREFETCHED. Вызов функции prefetch() также может занимать некоторое время. В большинстве реализаций MMAPI в состоянии PREFETCHED может находиться только один плеер.

Функция start() запускает проигрывание, переводя плеер из состояний UNREALIZED, REALIZED или PREFETCHED в состояние STARTED. Если плеер был в состоянии PREFETCHED, функция start() гарантированно вызывается мгновенно. Если плеер перемотан на конец, функция start() начинает проигрывание сначала.

Функция close() вызывается, когда плеер больше не нужен. Плеер переходит в состояние CLOSED, и в этом состоянии его может уничтожить сборщик мусора.

Чтобы остановить плеер, вызывается функция stop(). При этом он переходит из состояния STARTED в состояние PREFETCHED (и никуда не перематывается).

Чтобы освободить дефицитные ресурсы, вызывается функция deallocate(). При этом он переходит из состояния STARTED или PREFETCHED в состояние REALIZED.

Функция deallocate() имеет ещё одну важную роль. Если перевод плеера в состояние REALIZED не завершился (то есть, файл не загружен до конца), загрузка файла прерывается, и плеер остаётся в состоянии UNREALIZED.

В состояние UNREALIZED пути нет.

Интерфейс Control

Пустой интерфейс Control служит базой для конструирования различных интерфейсов управления проигрыванием. Несколько наследников Control определено в пакете javax.microedition.media.control: ToneControl, VolumeControl, MIDIControl и т. д.

Простейший пример кода

 import javax.microedition.media.*;
 
 Player p = Manager.createPlayer("http://www.fishy.com/my.mp3", "audio/mp3");
 p.start();

Телефоны, поддерживающие MMAPI

MMAPI является частью MIDP 2.0. То есть, любой телефон, поддерживающий MIDP 2.0, обязан поддерживать MMAPI. Вот (не исчерпывающий) список телефонов с MIDP 1.0, которые поддерживают MMAPI.

Nokia

Sony Ericsson

  • Все модели с поддержкой J2ME.

Siemens

  • Все модели с экраном 101×80 (M55, S55 и др.) имеют собственный набор классов для проигрывания мультимедиа, похожий на MMAPI.

Проблемы

MMAPI предназначен для проигрывания звука, видео и т. д. в мультимедийных приложениях. Например, на телефоне Motorola E398 встроенный аудиоплеер написан на Java, с использованием MMAPI. Однако MMAPI плохо подходит для реализации звуковых эффектов в мобильных играх, так как у каждого телефона свои тонкости. Одни позволяют держать все звуки одновременно в состоянии PREFETCHED и проигрывать их в любой момент; в других приходится прибегать к различным ухищрениям. Бывают и менее очевидные тонкости. Бывает, что между остановкой и повторным проигрыванием плеера должно пройти некоторое время, на некоторых отнюдь не устаревших моделях это время составляет 1—2 с!

Некоторые «тонкости» в действительности являются прямыми нарушениями стандарта.

Наиболее распространённые нарушения стандарта

По стандарту, если плеер находится в состоянии UNREALIZED, команда start() сначала переведёт его в REALIZED, затем в PREFETCHED, затем в STARTED. Некоторые телефоны не допускают таких «перепрыгиваний»; требуется явно задавать realize(), prefetch(), start().

Некоторые телефоны загружают файлы отложенно, что также противоречит стандарту. Предположим, плеер создан и переведён в состояние PREFETCHED. По стандарту, команда start() должна вызываться мгновенно. Но некоторые реализации MMAPI проводят загрузку только по команде start() (и лишь повторные start() действительно вызываются мгновенно).

По стандарту, если проигрывание закончилось, то после повторной команды start() плеер должен начать проигрывание сначала. На некоторых телефонах такой плеер ничего не играет, пока не будет явно перемотан назад функцией setMediaTime(0).

В ожидании MIDP 3.0

Предполагается, что ещё не вышедший MIDP 3.0 решит этот разнобой, ужесточив требования к реализации MMAPI.

Ссылки


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Полезное


Смотреть что такое "Mobile Media API" в других словарях:

  • Java Mobile Media API — The Mobile Media API (MMAPI) is an API specification for the Java ME platform CDC and CLDC devices such as mobile phones. Depending on how it s implemented, the APIs allow applications to play and record sounds and video, and to capture still… …   Wikipedia

  • Java Mobile Media API — …   Википедия

  • Mobile Service Architecture — (MSA) JSR 248 is a specification that describes an end to end wireless environment for Java ME. MSA includes a full set of 16 JSRs and a subset of 8 JSRs: Contents 1 MSA Subset 2 MSA 3 See also 4 …   Wikipedia

  • Mobile application development — is the process by which application software is developed for small low power handheld devices such as personal digital assistants, enterprise digital assistants or mobile phones. These applications are either pre installed on phones during… …   Wikipedia

  • Mobile Enterprise — (Mobile ERP) is a collection of Online Interactive Business Applications made possible by Mobile Broadband. Cellular Networks with GPRS and UMTS are connected to the Internet via Media Gateways. Mobile Enterprise serves HSDPA and HSUPA. Mobile… …   Wikipedia

  • Mobile ticketing — Part of a series on Electronic commerce Online goods and services Streaming media Electronic books Softwar …   Wikipedia

  • Mobile 3D Graphics API — M3G redirects here, for the morphine metabolite see Morphine 3 glucuronide Screenshot of Asphalt 3: Street Rules, showing the capabilities of the Mobile 3D Graphics API. The Mobile 3D Graphics API, commonly referred to as M3G, is a specification… …   Wikipedia

  • Media Transfer Protocol — The Media Transfer Protocol is a devised set of custom extensions to the Picture Transfer Protocol (PTP).[1] Whereas PTP was designed for downloading photographs from digital cameras, Media Transfer Protocol supports the transfer of music files… …   Wikipedia

  • Media Capture API — The Media Capture API is a web standard under development to allow web applications to access the media capture capabilities of a device (typically a Smartphone or other Mobile Internet device). This would allow a web application to include a… …   Wikipedia

  • Media resource locator — A media resource locator (MRL) is a URI used to uniquely identify and locate a multimedia resource. It is used by the VideoLAN and Xine media players, as well as by the Java Media Framework (JMF) API. VLC, for example, supports the following… …   Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»