Введение
Mobile Media API (MMAPI) - спецификация API для платформы Java ME CDC и устройств CLDC, таких как мобильные телефоны. В зависимости от того, как он реализован, API позволяют приложениям воспроизводить и записывать звуки и видео, а также захватывать неподвижные изображения. MMAPI был разработан в рамках Java Community Process как JSR 135.
Жизненный цикл игрока
Независимо от протокола или типа носителя, игрок перемещается через одни и те же дискретные состояния в течение своего жизненного цикла. Эти состояния перечислены в таблице ниже + состояния жизненного цикла экземпляра Player Описание состояния Нереализованное Первоначальное состояние при создании Player. В этом состоянии игрок не имеет достаточной информации для приобретения необходимых ресурсов для обработки носителей. Реализованный Игрок переходит в состояние Реализованный, как только он получил необходимую информацию для приобретения ресурсов. В таком состоянии, вероятно, большинство ресурсов уже приобретено для функционирования. Однако некоторые ресурсы могут не быть приобретены на этом этапе, особенно если есть системные зависимости, такие как аудио или видео драйвер, где должен быть получен эксклюзивный доступ. Предоставленный Игрок переходит в состояние предоставленного, как только все ресурсы были приобретены, включая дефицитные и зависимые от системы ресурсы. В состоянии "Предварительного добытия" у Игрока есть все необходимое для выполнения задач. Начало проигрывателя в состоянии "Начало" указывает на то, что контент, связанный с проигрывателем, обрабатывается. Закрытый Игрок переходит в состояние Закрытый в конце своего жизненного цикла. Игрок в закрытом состоянии не должен использоваться снова.
+ Lifecycle states of a Player instance State Description Unrealized Initial state when a Player is created. In this state the player does not have enough information to acquire the necessary resources to process the media. Realized The Player moves into the Realized state once it has obtained the necessary information to acquire the resources. In this state it is likely that most of the resources have already been acquired to function. However, some resources may not have been acquired at this point, especially if there are system dependencies involved such as with an audio or video driver where exclusive access must be obtained. Prefetched The Player moves into the Prefetched state once all resources have been acquired, including scarce and system dependent resources. Once in the Prefetched state, the Player has everything necessary to perform its tasks. Started A Player in the Started state indicates that the content associated with the Player is being processed. Closed A Player moves to the Closed state at the end of its lifecycle. A Player in the Closed state must not be used again.
Реализация
Как и в большинстве спецификаций Java ME, реализация различается, несмотря на все усилия авторов спецификации по обеспечению согласованности. Две очевидные области различий заключаются в поддерживаемых элементах управления и в приемлемых типах URI в первую очередь. Более неясно, поддерживается ли микширование; многие игры хотели бы воспроизводить музыкальный трек MIDI и накладывать звуковые эффекты PCM сверху. Еще один источник крайних расхождений - производительность. Например, если запрошен HTTP-клип, в какой момент он загружается? Спецификация признает это, предоставляя два метода игрока, которые могут быть вызваны до фактической игры: реализовать и prefetch. В зависимости от реализации, они могут выполнять часть работы по превращению клипа в воспроизводимое состояние, тем самым ускоряя фактическую воспроизведение клипа, когда это необходимо. Некоторые реализации достаточно сложны, чтобы фактически транслировать клип по запросу во время его воспроизведения. Symbian OS содержит очень полную реализацию JSR 135, но даже это в значительной степени зависит от базовых мультимедийных возможностей устройства, и некоторые производители устройств могут решить не раскрывать более неясные части Java ME, такие как запись. Последовательность реализации обеспечивается путем принуждения всех реализаций к прохождению Java Technology Compatibility Kit (TCK). Это гарантирует, что каждый поддерживаемый URI-схема, тип MIME и контроль тестируется, но не тестирует каждую пермутацию этих дополнительных частей.