La gestione dell'audio con Java ME
Pagina 1 di 4
L'argomento della multimedialità in Java ME è molto vasto, in quanto ciò è una caratteristica essenziale dei dispositivi stessi per la quale questa piattaforma è stata progettata. In questo articolo cercherò di introdurre la gestione dell'audio, in particolare dei formati più elementari, da cui poi, acquisite le conoscenze e le tecniche basilari è possibile imbattersi in argomenti più complessi. Per il momento qundi 'rompiamo' il muro del suono, facciamo suonare il nostro cellulare.
A partire dal MIDP 2.0 è stata introdotta in Java ME un 'implementazione standard per la gestione dell'audio. In precedenza l'audio veniva gestito dal framework MMAPI (Mobile Media API) separatamente, cioè non compreso nella piattaforma standard.
Con le MIDP 2.0 la Sun ha messo ha disposizione una serie di librerie che rientrano nativamente all'interno del profilo MIDP, permettendo così anche a dispositivi che non supportano le MMAPI, un minimo di multimedialità.
Le librerie in questione sono le Audio Building Block (un subset delle MMAPI) che supportano la gestione dei toni e il formato WAV.
Il supporto agli altri file audio dipendono dal dispositivo. Comunque molte delle cose che vedremo in questa guida valgono anche per gli altri tipi di file mutlimediali.
La classe Manager
La classe javax.microedition.media.Manager rappresenta il punto di accesso a tutte le funzioni inerenti alla riproduzione di file multimediali. Essa fornisce una serie di metodi statici, che si occupano di creare il Player per la riproduzione di file audio o sequenze di toni, e i Control che riguardano alcuni particolari funzioni di controllo di elaborazione dei media. Nel nostro caso i controlli che ci vengono resi disponobili sono ToneControl e VolumeControl, che fra poco capiremo di cosa si tratta.
L'interfaccia Player
Il Player è un'interfaccia che dipone di alcuni metodi che controllonao il ciclo di vita (start(), stop() etc..) di riproduzione di un file multimediale. Questo componente viene costruito dal Manager in base al file che vogliamo riprodurre.
La gestione dei toni
Per generare un tono da tastira, basta invocare il metodo statico playTone() della classe Manager:
Manager.playTone(int note, int duration, int volume);Vediamo nei dettagli i parametri passati nel metodo:
1) int note
Questo valore rappresenta semplicemnte la frequenza del suono che vogliamo riprodurre. Il valore va da 0 a 127, calcolato in base alla formula:
SEMITONE_CONST = 17.31234049066755 = 1/(ln(2^(1/12))) note = ln(freq/8.176)*SEMITONE_CONSTDa qui si ricava la frequenza in Hertz. Se vogliamo riprodurre la nota La, in questo caso è 69 che tramite questa formula equivale a 440 Hz.
2) int duration
Indica la durata del tono in millisecondi
3) int volume
Semplicemnte il volume del suono che va da 0 a 100
Ecco un semplice pezzo di codice che genera un tono:
try {
Manager.playTone(100, 100, 10);
} catch(MediaException ex) {
ex.printStackTrace();
}







