Articulo de referencia

API de Java Mobile Media

La API de medios móviles ( MMAPI ) es una especificación de API para dispositivos CDC y CLDC de la plataforma Java ME, como teléfonos móviles . Dependiendo de su implementación,...

La API de medios móviles ( MMAPI ) es una especificación de API para dispositivos CDC y CLDC de la plataforma Java ME, como teléfonos móviles . Dependiendo de su implementación, las API permiten que las aplicaciones reproduzcan y graben sonido y vídeo, y capturen imágenes fijas. MMAPI se desarrolló bajo el Proceso de la Comunidad Java como JSR 135.

conceptos de programación

La API de Java Multimedia se basa en cuatro tipos principales de clases en el javax.microedition.mediapaquete : el Manager, el Player, el PlayerListenery varios tipos de Control.

Los programadores de Java ME que deseen utilizar JSR 135 primero usarían los métodos estáticos de la Managerclase . Aunque existen otros métodos como playTone, el método principal utilizado es createPlayer. Este acepta una URI o un InputStreamy un tipo MIME . En la mayoría de los casos, se utilizan URI. Los protocolos URI comunes utilizados incluyen:

  • archivo:
  • recurso: (que puede extraer un archivo del interior del JAR del MIDlet, pero depende de la implementación)
  • http:
  • rtsp:
  • captura: (se utiliza para grabar audio o vídeo)

El tipo MIME es opcional y se deduce de los datos que se pasan como parámetro si no se proporciona.

El createPlayermétodo devuelve una implementación de la Playerinterfaz (incluso si se utiliza un URI de protocolo ` capture:` ). Esta interfaz cuenta con métodos básicos aplicables a todos los reproductores, como iniciar y detener la reproducción multimedia, y solicitar que se reproduzca en bucle. También se puede setPlayerListenercrear un objeto que implemente la PlayerListenerinterfaz, el cual recibirá diversos eventos relacionados con el clip (inicio, detención, finalización de la reproducción, etc.).

PlayerLas clases también tienen un getControlmétodo que devuelve una implementación de una en particular Control. Un Controlmaneja cualquier API opcional que no sea aplicable a todos los tipos de medios. Cualquier dado Playerpuede o no ser capaz de proporcionar una implementación de cualquier dado Control.

(Normalmente, el Controlvalor devuelto es en realidad el Playermismo, pero esto no está garantizado).

El conjunto de controles implementados por a Playerno es limitado; sin embargo, algunos controles estándar están definidos en el javax.microedition.media.controlpaquete por JSR:

(Otros pueden estar definidos en JSR 234 ( Suplementos multimedia avanzados ).

Un subconjunto de JSR 135 se define en JSR 118 ( MIDP 2.0).

Ciclo de vida del jugador

Independientemente del protocolo o del tipo de medio utilizado, el Playersistema pasa por los mismos estados discretos durante su ciclo de vida. Estos estados se enumeran en la tabla siguiente.

Implementaciones

Como ocurre con la mayoría de las especificaciones de Java ME, las implementaciones difieren a pesar de los esfuerzos de los autores por garantizar la coherencia. Dos áreas obvias de diferencias son los controles compatibles y, en primer lugar, los tipos de URI aceptables. Un aspecto menos claro es si se admite la mezcla ; muchos juegos desean reproducir una pista de música MIDI y superponer efectos de sonido PCM .

Otra fuente de gran variabilidad reside en el rendimiento. Por ejemplo, si se solicita un clip HTTPPlayer , ¿en qué momento se descarga? La especificación reconoce esta situación al proporcionar dos métodos que se pueden llamar antes de la reproducción: realizey prefetch. Dependiendo de la implementación, estos métodos pueden encargarse de preparar el clip para su reproducción, lo que permite reproducirlo más rápidamente cuando se necesita. Algunas implementaciones son lo suficientemente sofisticadas como para transmitir un clip bajo demanda mientras se está reproduciendo.

El sistema operativo Symbian contiene una implementación muy completa de JSR 135, pero incluso esta depende en gran medida de las capacidades multimedia subyacentes del dispositivo, y algunos fabricantes de dispositivos pueden optar por no exponer las partes menos conocidas de Java ME, como la grabación.

La coherencia de la implementación se garantiza exigiendo que todas las implementaciones superen la prueba del Kit de Compatibilidad Tecnológica de Java (TCK). Esto asegura que se pruebe cada esquema URI, tipo MIME y control compatibles, pero no todas las combinaciones posibles de estos elementos opcionales.

Ejemplo de código

paquete org.wikipedia.example ;import javax.microedition.midlet.* ; import javax.microedition.media.* ;public class SimplePlayer extends MIDlet { protected void destroyApp ( boolean b ) throws MIDletStateChangeException { // implementación }protected void pauseApp () { // implementación }protected void startApp () throws MIDletStateChangeException { try { String url = "http://upload.wikimedia.org/wikipedia/commons/a/a0/Bass_sample.mid " ; Player player = Manager.createPlayer ( url ) ; player.start ( ) ; } catch ( Exception e ) { e.printStackTrace ( ) ; } } }

Véase también

Bibliografía

  • Goyal, Vikram (1 de mayo de 2006). Pro Java ME MMAPI: Mobile Media API for Java Micro Edition (1.ª  ed.). Apress . pág.  250. ISBN 1-59059-639-0Archivado del original el 8 de enero de 2010. Consultado el 21 de enero de 2010 .
  • JSR 135
  • Descripción general de la API de medios móviles
Obtenido de " https://en.wikipedia.org/w/index.php?title=Java_Mobile_Media_API&oldid=1316005787 "