Un sottoinsieme delle API di Cordova
è dedicato all'interfacciamento con le funzionalità della piattaforma mobile sottostante per l'acquisizione di risorse multimediali come immagini, video e audio.
L'approccio generale è identico per tutti e tre i tipi di risorse e si basa su tre metodi dell'oggetto capture:
- captureAudio();
- captureImage();
- captureVideo().
Ciascun metodo avvia l'applicazione predefinita per l'acquisizione del tipo di risorsa richiamando la callback di successo o di errore in base all'esito dell'acquisizione. All'avvio di un'acquisizione è possibile specificare il numero di acquisizioni che si desidera effettuare in sequenza, così al termine dell'operazione alla callback di successo viene passato un array dei file corrispondenti.
Chiariamo il concetto con un esempio relativo all'acquisizione di due video in sequenza:
navigator.capture.captureVideo(onSuccess, onError, {limit: 2});
function onSuccess(mediaFiles) {
var i, path;
for (i=0; i<mediaFiles.length; i++) {
uploadFile(mediaFiles[i].fullPath);
}
}
function onError(error) {
alert("Si è verificato un errore (" + error.code + ")");
}
Nella chiamata del metodo captureVideo()
abbiamo specificato, oltre alle funzioni di callback, un oggetto con la proprietà limit
impostata a 2 per indicare che l'applicazione di cattura video dovrà invocare la callback di successo dopo l'acquisizione di due clip.
A questa callback verrà passato l'array mediaFiles
che contiene l'elenco dei file acquisiti rappresentati tramite oggetti di tipo MediaFile
. Questo tipo di oggetto codifica alcune informazioni sui file multimediali tramite le seguenti proprietà:
Proprietà | Descrizione |
---|---|
name | contiene il nome del file senza percorso |
fullPath | rappresenta il nome del file comprensivo di percorso |
type | il mime type del file |
lastModifiedDate | la data e ora dell'ultima modifica del file |
size | le dimensioni del file in byte |
Nel nostro esempio utilizziamo il percorso del file per effettuare l'upload verso un server tramite un'ipotetica funzione uploadFile()
.
Riprodurre un file multimediale
Cordova prevede anche la possibilità di effettuare la riproduzione di un file audio tramite l'oggetto media, come mostrato dal seguente codice:
var audioMedia = new Media("file://percorso/fileAudio.mp3", onSuccess, onError);
audioMedia.play();
La prima istruzione crea un oggetto di tipo Media basato sul file specificato come primo argomento ed imposta le callback che verranno chiamate in caso di esito positivo della riproduzione o di errore.
L'avvio effettivo della riproduzione avviene alla chiamata del metodo play()
. In modo analogo possiamo mettere in pausa la riproduzione (pause()
), terminarla (stop()
), posizionarci ad un determinato punto (seekTo()
), impostare il volume (setVolume()
) e così via.