2009-01-23 24 views
5

¿Cuál es la mejor manera de reproducir audio utilizando J2ME Media Libary? Por ejemplo, ¿debería utilizar MMAPI o debería simplemente utilizar el método platformRequest (String s) de Midlet?Reproducción de audio con J2ME

+0

Realmente depende de lo que quieras hacer ... deberías ser mucho más específico con lo que estás buscando. Si quieres reproducir un MP3, es bastante fácil. Si desea transmitir audio a través de Internet, es casi imposible. – joeforker

Respuesta

3

Por mejor, ¿qué quieres decir? ¿De la máxima calidad? La mejor experiencia de usuario? La mayoría de los estándares cumple?

Básicamente (este no es el mejor tipo de respuesta que conozco), depende de la plataforma - algo que es un tema familiar con J2ME - ya que las implementaciones pueden variar ampliamente y el MMAPI usualmente aprovecha algún software/hardware nativo . En BlackBerry, el MMAPI funciona muy bien, con algunos caprichos.

Mi consejo es usar el MMAPI donde funciona bien, le dará la aplicación más portátil. Experimente o explore las placas de desarrollador para su conjunto específico de dispositivos de destino para ver qué tan bien funciona en los teléfonos que desea admitir.

7

El siguiente código debería funcionar para el 90-95% de los teléfonos compatibles con JSR-135. El pedido de todas las diversas llamadas a métodos es la clave para que esto sea portátil. Esto es para sonidos locales a su JAR. Cualquier archivo de audio streaming sería otro problema por completo :)

// loads the InputStream for the sound 
InputStream inputStream = this.getClass().getResourceAsStream(musicFile); 

// create the standard Player 
musicPlayer = Manager.createPlayer(inputStream, musicEncoding); 
musicPlayer.prefetch(); 

// add player listener to access sound events 
musicPlayer.addPlayerListener(this); 

if(loopMusic) 
{  
    // use the loop count method for infinite looping 
    musicPlayer.setLoopCount(-1); 
} 

// The set occurs twice to prevent sound spikes at the very 
// beginning of the sound. 
VolumeControl volumeControl = 
    (VolumeControl) musicPlayer.getControl("VolumeControl"); 
volumeControl.setLevel(curVolume); 

// finally start the piece of music 
musicPlayer.start(); 

// set the volume once more 
volumeControl = (VolumeControl) musicPlayer.getControl("VolumeControl"); 
volumeControl.setLevel(curVolume); 

// finally, delete the input stream to save on resources 
inputStream.close(); 
inputStream = null; 
0

En algunos dispositivos que utilizan una petición plataforma hará que su aplicación a cerrar y en otras ciertas peticiones de la plataforma se bloqueará el dispositivo (otra cosa que no sea HTTP URL en algunos dispositivos) .

Por lo tanto, es posible que deba utilizar ambos métodos, eligiendo cuál usar según las pruebas del dispositivo.

-1

El audio local (en archivo Jar) es más fácil de admitir, como se explica en la respuesta anterior de Shane. Para el contenido en la web se vuelve mucho más difícil ya que entran en juego muchos factores, como problemas de conectividad del servidor, memoria de los teléfonos, etc. Si se le solicitará que admita una gran cantidad de teléfonos, es recomendable trabajar con 2 o 3 técnicas de implementación y usar en consecuencia.

Cuestiones relacionadas