Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Gestire l'audio

La gestione di applicazioni multimediali, come l'audio, grazie alle Mobile Multimedia API (MMAPI).
La gestione di applicazioni multimediali, come l'audio, grazie alle Mobile Multimedia API (MMAPI).
Link copiato negli appunti

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":

Figura 9. Schermata "Setting for Project"
Schermata Setting 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:

Figura 10. Content type validi per i protocolli
Content type validi per i protocolli

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 è supportata
  • supports.recording ritorna true se la registrazione è supportata
  • audio.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);

Ti consigliamo anche