Consejo 24 de Java: Cómo reproducir audio en aplicaciones

La reproducción de archivos de audio en aplicaciones Java no se admite oficialmente en la versión actual de Java. Pero no temas, ¡hay una manera! Este consejo le mostrará cómo, comenzando con una descripción de los pasos básicos involucrados en la reproducción de clips de audio en subprogramas Java y luego pasando al soporte de aplicaciones Java.

Reproducir clips de audio en subprogramas es bastante simple e implica los siguientes pasos:

  • Crear un objeto AudioClip
  • Cargue el archivo de sonido .au en AudioClip
  • Reproduce sonidos una vez o repite continuamente
  • Detener la reproducción

Así es como se ve el código para estos pasos:

importar java.applet. *; AudioClip ac = getAudioClip (getCodeBase (), soundFile); ac.play (); // jugar una vez ac.stop (); // deja de jugar ac.loop (); // jugar continuamente

Parecería lógico utilizar este mismo código para reproducir clips de audio en una aplicación Java. Desafortunadamente, si lo hace, obtendrá errores del compilador. ¿Por qué? Porque el AudioClipobjeto y el getAudioClip()método forman parte del paquete java.applet y no forman parte de las aplicaciones. La buena noticia es que podemos sumergirnos y hacer que las cosas funcionen nosotros mismos.

El truco para resolver este problema es utilizar algunas funciones no documentadas que proporciona Sun en su JDK. Echando un vistazo dentro del archivo classes.zip del Sun JDK (usando cualquiera de las diversas utilidades de archivos zip), encontramos no solo los paquetes estándar de Java como java.applet sino también sun.audio . (Estos se encuentran en el directorio sun / audio).

El paquete sun.audio contiene todo lo que necesitamos para poder reproducir clips de audio. Aquí está el código:

importar sun.audio. *; // importar el paquete sun.audio import java.io. *; // ** agregue esto en el código de su aplicación según corresponda // Abra una secuencia de entrada al archivo de audio. InputStream in = nuevo FileInputStream (Nombre de archivo); // Cree un objeto AudioStream a partir del flujo de entrada. AudioStream como = nuevo AudioStream (en); // Usa el miembro de clase estática "player" de la clase AudioPlayer para reproducir // el clip. AudioPlayer.player.start (como); // Del mismo modo, para detener el audio. AudioPlayer.player.stop (como);

Para usar una URL como fuente de transmisión de audio, sustituya lo siguiente para la transmisión de entrada y la configuración de transmisión de audio:

AudioStream as = new AudioStream (url.openStream ()); 

Reproducir la transmisión de audio continuamente agrega un poco más de complejidad:

// Cree una secuencia de audio como se discutió anteriormente. // Crea una fuente de AudioData. Datos de AudioData = as.getData (); // Cree ContinuousAudioDataStream. ContinuousAudioDataStream cas = new ContinuousAudioDataStream (datos); // Reproducir audio. AudioPlayer.player.play (cas); // Del mismo modo, para detener el audio. AudioPlayer.player.stop (cas);

Y ahí lo tienes. Recuerde, esta técnica utiliza características indocumentadas; no hay garantías de que funcionará con nada que no sea el Sun JDK actual.

Chong Ser Wah es consultor en el Centro de Competencia para Java en Singapur. Echa un vistazo a la competición de la Copa Java del centro.

Esta historia, "Consejo 24 de Java: cómo reproducir audio en aplicaciones" fue publicada originalmente por JavaWorld.