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

Riprodurre il suono

Facciamo suonare il cellulare con un file wav, presente nel jar o in remoto su un server web
Facciamo suonare il cellulare con un file wav, presente nel jar o in remoto su un server web
Link copiato negli appunti

Sistemiamo nella cartella res del nostro progetto un file wav.

La classe che ci permetterà di riprodurre il suono è Player la cui istanza è ottenibile dall'oggetto Manager:

Player player = Manager.createPlayer(...);

Sfrutteremo il metodo al quale si passano come parametri: un oggetto InputStream e una stringa che identifica il tipo di file audio da riprodurre.

Listato 22. Passaggio di parametri: InputStream e stringa con il file da riprodurre

private Player player = null;

......

    public void commandAction(Command c, Displayable arg1)
    {
        if (c == exit)
        {
            notifyDestroyed();
        }
        else if (c == next)
        {
            InputStream is = getClass().getResourceAsStream("/alarm.wav");
            try
            {
                player = Manager.createPlayer(is, "audio/x-wav");
                player.realize();
                player.start();
            }
            catch (IOException e)
            {
                e.printStackTrace();
            }
            catch (MediaException e)
            {
                e.printStackTrace();
            }
        }
    }

Otteniamo lo stream leggendo il file che si trova nel jar della nostra applicazione con il metodo getResourceAsStream.

Successivamente creiamo il Player e lo poniamo nello stato REALIZED (è lo stato in cui il Player ha acquisito i dati per la riproduzione da un server, da un file, ecc.) con l'istruzione realize().

Gli altri stati in cui un Player si può trovare sono:

  • UNREALIZED: il player non ha ancora acquisito tutte le informazioni di cui ha bisogno;
  • PREFETCHED: porre il player in questo stato permette ad esso di acquisire altre risorse o di effettuare task come la bufferizzazione;
  • STARTED: è lo stato in cui il Player ha iniziato la riproduzione;
  • CLOSED: il Player in questo stato ha rilasciato le risorse e non può essere usato nuovamente.
Figura 11. Gli stati di un player
stati di un player

La chiamata Player.start() avvia la riproduzione e se stiamo sull'emulatore del WTK potremo sentire il suono direttamente dagli altoparlanti del PC.

Altri modi di riproduzione

La classe Player è quella che permette al terminale di leggere i file. Se il nostro file wav si fosse trovato in un server web invece che nel jar della nostra applicazione avremo usato il metodo createPlayer che accetta come parametro la stringa locator. Supponendo che il web server abbia un ip 10.128.2.96 potremo scrivere:

Player player = Manager.createPlayer("http://10.128.2.96/alarm.wav);

In questo caso sarà necessario permettere la connessione di rete che consentirà di effettuare il download del file e successivamente la riproduzione dello stesso.

Con il metodo setLoopCount(..), invocato prima dello start, si può decidere se riprodurre più volte consecutivamente (dipende dal valore del parametro del metodo) il suono:

player.setLoopCount(3);
player.start();

premette di riprodurre 3 volte il suono.

Alcuni link interessanti sull'argomento MMAPI sono:

Ti consigliamo anche