Mobile Media API (MMAPI, JSR-135) - en uppsättning klasser för J2ME som låter dig spela upp ljud och video; del av MIDP 2.0.
MIDP 2.0 kräver att telefonen spelar upp toner och WAV- ljud . Att spela andra format ( MIDI , MP3 , AMR , 3GP , MPEG -4, MMF , iMelody ) är valfritt. Däremot spelas MIDI de facto på alla telefoner.
MMAPI-klasserna finns i javax.microedition.media.
Managerklassen används för att skapa spelare . Alla spelare har ett spelargränssnitt . MMAPI inkluderar även andra klasser och gränssnitt som används för att kontrollera volymen, svara på händelser etc.
Spelaren har fem tillstånd:
Manager.createPlayer()Spelaren som just skapats av funktionen är i tillståndet UNREALIZED.
Funktionen realize()laddar ner alla resurser som behövs för uppspelning, med undantag för "värdefullt och knappt" (i synnerhet läser den en fil eller kommunicerar med servern ). Spelaren överförs från stat UNREALIZEDtill stat REALIZED. Funktionsanropet realize()kan ta lite tid.
Funktionen prefetch()laddar "värdefulla och knappa resurser"; spelaren flyttar från staten UNREALIZEDeller REALIZEDtill staten PREFETCHED. Funktionsanropet kan prefetch()också ta lite tid. I de flesta MMAPI-implementeringar kan PREFETCHEDendast en spelare vara i ett tillstånd.
Funktionen start()startar uppspelningen genom att växla spelaren från tillstånden UNREALIZEDeller REALIZEDtill PREFETCHEDtillståndet STARTED. Om spelaren var i staten PREFETCHEDkommer funktionen start()garanterat att anropas direkt. Om spelaren spolas tillbaka till slutet, start()startar funktionen uppspelningen från början.
Funktionen close()anropas när spelaren inte längre behövs. Spelaren går in i staten CLOSEDoch i detta tillstånd kan den förstöras av sopsamlaren .
För att stoppa spelaren kallas funktionen stop(). Samtidigt går den från stat STARTEDtill stat PREFETCHED(och spolas inte tillbaka någonstans).
Funktionen kallas för att frigöra knappa resurser deallocate(). Samtidigt går det från staten STARTEDeller PREFETCHEDtill staten REALIZED.
Funktionen deallocate()har en annan viktig roll. Om övergången av spelaren till tillståndet REALIZEDinte har slutförts (det vill säga filen har inte laddats ner till slutet), avbryts filladdningen och spelaren förblir i UNREALIZED.
Det UNREALIZEDfinns ingen väg i staten.
Det tomma gränssnittet Controltjänar som bas för att konstruera olika uppspelningskontrollgränssnitt. Flera ättlingar Controldefinieras i paketet javax.microedition.media.control: ToneControl, VolumeControl, MIDIControletc.
MMAPI är en del av MIDP 2.0. Det vill säga, alla telefoner som stöder MIDP 2.0 måste stödja MMAPI. Här är en (icke uttömmande) lista över MIDP 1.0-telefoner som stöder MMAPI.
MMAPI är utformad för att spela upp ljud, video, etc. i multimediaapplikationer . Till exempel på Motorola E398 -telefonen är den inbyggda ljudspelaren skriven i Java med hjälp av MMAPI. MMAPI är dock inte väl lämpad för att implementera ljudeffekter i mobilspel , eftersom varje telefon har sina egna finesser. Vissa låter dig behålla alla ljud samtidigt i tillståndet och spela dem när som helst; i andra är det nödvändigt att ta till olika knep. Det finns också mindre uppenbara finesser. Det händer att det måste gå lite tid mellan att stoppa och spela om spelaren, på vissa på intet sätt föråldrade modeller är den här tiden 1-2 s! PREFETCHED
Vissa "finesser" är faktiskt direkta brott mot standarden.
Som standard, om spelaren är i tillståndet UNREALIZED, kommer kommandot start()först att ändra det till REALIZED, sedan till PREFETCHED, sedan till STARTED. Vissa telefoner tillåter inte sådan "hoppning"; det krävs att uttryckligen ställa in realize(), prefetch(), start().
Vissa telefoner laddar filer senare, vilket också strider mot standarden. Anta att spelaren har skapats och flyttats till staten PREFETCHED. Enligt standarden start()ska kommandot anropas omedelbart. Men vissa MMAPI-implementationer laddas bara på kommando start()(och endast upprepade start()sådana anropas faktiskt direkt).
Enligt standarden, om uppspelningen är över, start()måste spelaren börja spela igen efter ett andra kommando. På vissa telefoner spelar en sådan spelare ingenting förrän den uttryckligen spolas tillbaka med setMediaTime(0).
Det antas att den ännu inte släppta MIDP 3.0 kommer att lösa denna inkonsekvens genom att skärpa kraven för implementering av MMAPI.
Java | |
---|---|
Plattformar | |
Sun Technologies | |
Viktiga tredjepartstekniker | |
Berättelse |
|
Språkegenskaper | |
Skriptspråk |
|
Java-konferenser |
|