In questa lezione iniziamo a vedere le potenzialità di un package opzionale: le Mobile Multimedia API (MMAPI).
La specifica MMAPI è identificata dalla JSR 135 e dalla versione 2.0 del profilo MIDP, è presente un sottoinsieme di classi di questo che nella 1.0 era un package opzionale.
Di seguito vedremo come realizzare una midlet che riproduce un file wav compreso nel jar dell'applicazione stessa.
Protocolli media supportati
Iniziamo scrivendo le istruzioni che ci permetteranno di sapere quali formati media e quali protocolli sono supportati dal terminale sul quale installeremo il nostro software.
Quando si crea il progetto, con il WTK, si deve selezionare la casella relativa a Mobile Media API (JSR 135) nella schermata "Settings for Project":
La prima classe, che utilizziamo, è la classe Manager che ci permette, con i metodi getSupportedContentTypes
e getSupportedProtocols
, di scoprire le compatibilità del nostro terminale (che ovviamente deve supportare le MMAPI):
Listato 21. Scopre le compatibilità del nostro terminale (Vedi codice completo)
..//
String[] protocols = Manager.getSupportedProtocols(null);
String[] contentType = null;
form = new Form("Supported");
StringItem si = null;
for (int k = 0; k < protocols.length; k++)
{
contentType = Manager.getSupportedContentTypes(null);
for (int i = 0; i < contentType.length; i++)
{
si = new StringItem("Content Type "+(i+1)+" for protcol "+protocols[k]+": ", contentType[i]);
form.append(si);
}
}
display.setCurrent(form);
....//
Il metodo getSupportedProtocols
accetta come argomento il content type per il quale si vogliono conoscere i protocolli supportati: lasciando null si ottiene un elenco completo di tutti quelli supportati indipendentemente dal tipo di contenuto.
Una volta ottenuti tutti i protocolli supportati, con i due cicli for, si tracciano i content type validi per ciascun protocollo e si visualizzano nel form.
Per l'esecuzione dell'applicazione nell'emulatore del WTK, si sceglie il device MediaControlSkin che visualizza una schermata di questo tipo:
I protocolli che sono riportati nel form sono:
- Device: significa che possono essere trattati file multimediali (di quei content-type) che si trovano nel jar dal terminale;
- Http: si può effettuare il download di file multimediali via http;
- File: possono essere letti file dal file system del terminale;
- Capture: possono essere catturati (o registrati) i file multimediali.
Altre funzionalità supportate dai terminali mobili possono essere tracciate da una midlet, tramite la chiamata al metodo System.getProperty
, passando i seguenti parametri:
microedition.media.version
ritorna la versione supportata, "1.0" or "1.1", o null se le MMAPI non sono supportate;supports.mixing
ritorna true se sono supportati i suoni polifonici, false altrimenti;supports.audio.capture
ritorna true se la cattura audio è supportata;supports.video.capture
ritorna true se la cattura video è supportatasupports.recording
ritorna true se la registrazione è supportataaudio.encodings
ritorna una stringa che rappresenta il formato audio nel caso di registrazioni (null se il recording audio non è supportato);video.encodings
ritorna una stringa che rappresenta il formato video nel caso di registrazioni (null se il recording video non è supportato);video.snapshot.encodings
ritorna una stringa che rappresenta il formato immagine nel caso di cattura (null se il capture);streamable.contents
ritorna una stringa che rappresenta il formato supportato in streaming (null se lo streaming non è supportato);