stringtranslate.com

API de medios móviles Java

La API de medios móviles ( MMAPI ) es una especificación de API para los dispositivos CDC y CLDC de la plataforma Java ME , como los teléfonos móviles . Según cómo se implemente, las API permiten que las aplicaciones reproduzcan y graben sonidos y videos, y que capturen imágenes fijas. MMAPI se desarrolló en el marco del proceso comunitario de Java como JSR 135.

Conceptos de programación

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

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

El tipo MIME es opcional y se infiere de los datos pasados ​​si no se suministran.

El createPlayermétodo devuelve una implementación de la Player interfaz (incluso si utiliza una URI de protocolo de captura ). Tiene métodos básicos que son aplicables a todos los reproductores, como iniciar y detener el contenido multimedia y solicitar que se repita. También puede setPlayerListenerutilizar un objeto que implemente la PlayerListenerinterfaz, que recibirá varios eventos relacionados con el clip (inicio, detención, finalización del contenido multimedia, etc.).

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

(Normalmente, lo Controlque se devuelve es en realidad lo Playermismo, pero no se garantiza que sea así).

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

(Se pueden definir otros 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 tipo de medio involucrado, el Playersistema pasa por los mismos estados discretos durante su ciclo de vida. Estos estados se enumeran en la siguiente tabla

Implementaciones

Como ocurre con la mayoría de las especificaciones de Java ME, las implementaciones difieren a pesar de los esfuerzos de los autores de las especificaciones por garantizar la coherencia. Dos áreas obvias de diferencias se encuentran en los controles admitidos y en los tipos de URI aceptables en primer lugar. Las áreas más oscuras son si se admite la mezcla ; muchos juegos querrían reproducir una pista de música MIDI y superponer efectos de sonido PCM .

Otra fuente de variación extrema es el rendimiento. Por ejemplo, si se solicita un clip HTTP , ¿en qué momento se descarga el clip? La especificación reconoce esto al proporcionar dos Playermétodos que se pueden llamar antes de la reproducción real: realizey prefetch. Según la implementación, estos pueden realizar parte del trabajo de poner el clip en un estado reproducible, lo que hace que sea más rápido reproducirlo cuando sea necesario. Algunas implementaciones son lo suficientemente sofisticadas como para transmitir un clip a pedido mientras se está reproduciendo.

Symbian OS contiene una implementación muy completa de JSR 135, pero incluso esto depende en gran medida de las capacidades multimedia subyacentes del dispositivo, y algunos fabricantes de dispositivos pueden optar por no exponer las partes más oscuras de Java ME, como la grabación.

La coherencia de la implementación se garantiza al obligar a todas las implementaciones a pasar el Kit de compatibilidad de tecnología Java (TCK). Esto garantiza que se pruebe cada esquema de URI, tipo MIME y control admitidos, pero no se prueba cada permutación de estas partes opcionales.

Ejemplo de código

paquete org.wikipedia ; importar javax.microedition.midlet.* ; importar javax.microedition.media.* ;  clase pública SimplePlayer extiende MIDlet { void protegido destroyApp ( booleano arg0 ) lanza MIDletStateChangeException {}             void protegido pauseApp () {}    void protegido startApp () lanza MIDletStateChangeException { try { String url = " http://upload.wikimedia.org/wikipedia/commons/a/a0/Bass_sample.mid" ; Jugador jugador = Manager.createPlayer ( url ) ; jugador.start ( ) ; } catch ( Excepción e ) { e.printStackTrace ( ) ; } } }                        

Véase también

Bibliografía

Enlaces externos