Введение

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

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

Независимо от протокола или типа носителя, игрок перемещается через одни и те же дискретные состояния в течение своего жизненного цикла. Эти состояния перечислены в таблице ниже + состояния жизненного цикла экземпляра Player Описание состояния Нереализованное Первоначальное состояние при создании Player. В этом состоянии игрок не имеет достаточной информации для приобретения необходимых ресурсов для обработки носителей. Реализованный Игрок переходит в состояние Реализованный, как только он получил необходимую информацию для приобретения ресурсов. В таком состоянии, вероятно, большинство ресурсов уже приобретено для функционирования. Однако некоторые ресурсы могут не быть приобретены на этом этапе, особенно если есть системные зависимости, такие как аудио или видео драйвер, где должен быть получен эксклюзивный доступ. Предоставленный Игрок переходит в состояние предоставленного, как только все ресурсы были приобретены, включая дефицитные и зависимые от системы ресурсы. В состоянии "Предварительного добытия" у Игрока есть все необходимое для выполнения задач. Начало проигрывателя в состоянии "Начало" указывает на то, что контент, связанный с проигрывателем, обрабатывается. Закрытый Игрок переходит в состояние Закрытый в конце своего жизненного цикла. Игрок в закрытом состоянии не должен использоваться снова.

Реализация

Как и в большинстве спецификаций Java ME, реализация различается, несмотря на все усилия авторов спецификации по обеспечению согласованности. Две очевидные области различий заключаются в поддерживаемых элементах управления и в приемлемых типах URI в первую очередь. Более неясно, поддерживается ли микширование; многие игры хотели бы воспроизводить музыкальный трек MIDI и накладывать звуковые эффекты PCM сверху. Еще один источник крайних расхождений - производительность. Например, если запрошен HTTP-клип, в какой момент он загружается? Спецификация признает это, предоставляя два метода игрока, которые могут быть вызваны до фактической игры: реализовать и prefetch. В зависимости от реализации, они могут выполнять часть работы по превращению клипа в воспроизводимое состояние, тем самым ускоряя фактическую воспроизведение клипа, когда это необходимо. Некоторые реализации достаточно сложны, чтобы фактически транслировать клип по запросу во время его воспроизведения. Symbian OS содержит очень полную реализацию JSR 135, но даже это в значительной степени зависит от базовых мультимедийных возможностей устройства, и некоторые производители устройств могут решить не раскрывать более неясные части Java ME, такие как запись. Последовательность реализации обеспечивается путем принуждения всех реализаций к прохождению Java Technology Compatibility Kit (TCK). Это гарантирует, что каждый поддерживаемый URI-схема, тип MIME и контроль тестируется, но не тестирует каждую пермутацию этих дополнительных частей.