506 lines
14 KiB
Markdown
506 lines
14 KiB
Markdown
|
<!---
|
||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||
|
or more contributor license agreements. See the NOTICE file
|
||
|
distributed with this work for additional information
|
||
|
regarding copyright ownership. The ASF licenses this file
|
||
|
to you under the Apache License, Version 2.0 (the
|
||
|
"License"); you may not use this file except in compliance
|
||
|
with the License. You may obtain a copy of the License at
|
||
|
|
||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
Unless required by applicable law or agreed to in writing,
|
||
|
software distributed under the License is distributed on an
|
||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||
|
KIND, either express or implied. See the License for the
|
||
|
specific language governing permissions and limitations
|
||
|
under the License.
|
||
|
-->
|
||
|
|
||
|
# cordova-plugin-media
|
||
|
|
||
|
Questo plugin consente di registrare e riprodurre i file audio su un dispositivo.
|
||
|
|
||
|
**Nota**: l'implementazione attuale non aderisce a una specifica del W3C per l'acquisizione di mezzi e viene fornito solo per comodità. Una futura realizzazione aderirà alla specifica W3C più recente e può deprecare le API corrente.
|
||
|
|
||
|
Questo plugin definisce un costruttore `Media` globale.
|
||
|
|
||
|
Anche se in ambito globale, non è disponibile fino a dopo l'evento `deviceready`.
|
||
|
|
||
|
document.addEventListener("deviceready", onDeviceReady, false);
|
||
|
function onDeviceReady() {
|
||
|
console.log(Media);
|
||
|
}
|
||
|
|
||
|
|
||
|
## Installazione
|
||
|
|
||
|
cordova plugin add cordova-plugin-media
|
||
|
|
||
|
|
||
|
## Piattaforme supportate
|
||
|
|
||
|
* Android
|
||
|
* BlackBerry 10
|
||
|
* iOS
|
||
|
* Windows Phone 7 e 8
|
||
|
* Tizen
|
||
|
* Windows
|
||
|
|
||
|
## Stranezze di Windows Phone
|
||
|
|
||
|
* File sola multimediale può essere riprodotti in un momento.
|
||
|
|
||
|
* Ci sono severe restrizioni su come l'applicazione interagisce con altri media. Vedere la [documentazione di Microsoft per maggiori dettagli][1].
|
||
|
|
||
|
[1]: http://msdn.microsoft.com/en-us/library/windowsphone/develop/hh184838(v=vs.92).aspx
|
||
|
|
||
|
## Media
|
||
|
|
||
|
var media = new Media(src, mediaSuccess, [mediaError], [mediaStatus]);
|
||
|
|
||
|
|
||
|
### Parametri
|
||
|
|
||
|
* **src**: un URI contenente il contenuto audio. *(DOMString)*
|
||
|
|
||
|
* **mediaSuccess**: (facoltativo) il callback che viene eseguito dopo un `Media` oggetto ha completato il gioco corrente, record o interrompere l'azione. *(Funzione)*
|
||
|
|
||
|
* **errore mediaError**: (facoltativo) il callback che viene eseguito se si verifica un errore. *(Funzione)*
|
||
|
|
||
|
* **mediaStatus**: (facoltativo) il callback che viene eseguito per indicare i cambiamenti di stato. *(Funzione)*
|
||
|
|
||
|
### Costanti
|
||
|
|
||
|
Costanti sono segnalate come unico parametro al metodo di callback `mediaStatus`:
|
||
|
|
||
|
* `Media.MEDIA_NONE` = 0;
|
||
|
* `Media.MEDIA_STARTING` = 1;
|
||
|
* `Media.MEDIA_RUNNING` = 2;
|
||
|
* `Media.MEDIA_PAUSED` = 3;
|
||
|
* `Media.MEDIA_STOPPED` = 4;
|
||
|
|
||
|
### Metodi
|
||
|
|
||
|
* `media.getCurrentPosition`: Restituisce la posizione corrente all'interno di un file audio.
|
||
|
|
||
|
* `media.getDuration`: Restituisce la durata di un file audio.
|
||
|
|
||
|
* `media.play`: Iniziare o riprendere la riproduzione di un file audio.
|
||
|
|
||
|
* `media.pause`: Pausa la riproduzione di un file audio.
|
||
|
|
||
|
* `media.release`: Libera risorse audio del sistema operativo sottostante.
|
||
|
|
||
|
* `media.seekTo`: Sposta la posizione all'interno del file audio.
|
||
|
|
||
|
* `media.setVolume`: Impostare il volume per la riproduzione audio.
|
||
|
|
||
|
* `media.startRecord`: Iniziare a registrare un file audio.
|
||
|
|
||
|
* `media.stopRecord`: Interrompere la registrazione di un file audio.
|
||
|
|
||
|
* `media.stop`: Interrompere la riproduzione di un file audio.
|
||
|
|
||
|
### Parametri supplementari ReadOnly
|
||
|
|
||
|
* **posizione**: la posizione all'interno della riproduzione audio, in pochi secondi.
|
||
|
|
||
|
* Non aggiornate automaticamente durante il gioco; chiamare `getCurrentPosition` per l'aggiornamento.
|
||
|
|
||
|
* **durata**: la durata dei media, in secondi.
|
||
|
|
||
|
## media.getCurrentPosition
|
||
|
|
||
|
Restituisce la posizione corrente all'interno di un file audio. Aggiorna anche il parametro di `position` dell'oggetto `Media`.
|
||
|
|
||
|
media.getCurrentPosition(mediaSuccess, [mediaError]);
|
||
|
|
||
|
|
||
|
### Parametri
|
||
|
|
||
|
* **mediaSuccess**: il callback passato la posizione corrente in pochi secondi.
|
||
|
|
||
|
* **errore mediaError**: (facoltativo) il callback da eseguire se si verifica un errore.
|
||
|
|
||
|
### Esempio rapido
|
||
|
|
||
|
// Audio player
|
||
|
//
|
||
|
var my_media = new Media(src, onSuccess, onError);
|
||
|
|
||
|
// Update media position every second
|
||
|
var mediaTimer = setInterval(function () {
|
||
|
// get media position
|
||
|
my_media.getCurrentPosition(
|
||
|
// success callback
|
||
|
function (position) {
|
||
|
if (position > -1) {
|
||
|
console.log((position) + " sec");
|
||
|
}
|
||
|
},
|
||
|
// error callback
|
||
|
function (e) {
|
||
|
console.log("Error getting pos=" + e);
|
||
|
}
|
||
|
);
|
||
|
}, 1000);
|
||
|
|
||
|
|
||
|
## media.getDuration
|
||
|
|
||
|
Restituisce la durata di un file audio in secondi. Se la durata è sconosciuta, essa restituisce un valore di -1.
|
||
|
|
||
|
media.getDuration();
|
||
|
|
||
|
|
||
|
### Esempio rapido
|
||
|
|
||
|
// Audio player
|
||
|
//
|
||
|
var my_media = new Media(src, onSuccess, onError);
|
||
|
|
||
|
// Get duration
|
||
|
var counter = 0;
|
||
|
var timerDur = setInterval(function() {
|
||
|
counter = counter + 100;
|
||
|
if (counter > 2000) {
|
||
|
clearInterval(timerDur);
|
||
|
}
|
||
|
var dur = my_media.getDuration();
|
||
|
if (dur > 0) {
|
||
|
clearInterval(timerDur);
|
||
|
document.getElementById('audio_duration').innerHTML = (dur) + " sec";
|
||
|
}
|
||
|
}, 100);
|
||
|
|
||
|
|
||
|
## Media.pause
|
||
|
|
||
|
Sospende la riproduzione di un file audio.
|
||
|
|
||
|
media.pause();
|
||
|
|
||
|
|
||
|
### Esempio rapido
|
||
|
|
||
|
// Play audio
|
||
|
//
|
||
|
function playAudio(url) {
|
||
|
// Play the audio file at url
|
||
|
var my_media = new Media(url,
|
||
|
// success callback
|
||
|
function () { console.log("playAudio():Audio Success"); },
|
||
|
// error callback
|
||
|
function (err) { console.log("playAudio():Audio Error: " + err); }
|
||
|
);
|
||
|
|
||
|
// Play audio
|
||
|
my_media.play();
|
||
|
|
||
|
// Pause after 10 seconds
|
||
|
setTimeout(function () {
|
||
|
media.pause();
|
||
|
}, 10000);
|
||
|
}
|
||
|
|
||
|
|
||
|
## Media.Play
|
||
|
|
||
|
Avvia o riprende la riproduzione di un file audio.
|
||
|
|
||
|
media.play();
|
||
|
|
||
|
|
||
|
### Esempio rapido
|
||
|
|
||
|
// Play audio
|
||
|
//
|
||
|
function playAudio(url) {
|
||
|
// Play the audio file at url
|
||
|
var my_media = new Media(url,
|
||
|
// success callback
|
||
|
function () {
|
||
|
console.log("playAudio():Audio Success");
|
||
|
},
|
||
|
// error callback
|
||
|
function (err) {
|
||
|
console.log("playAudio():Audio Error: " + err);
|
||
|
}
|
||
|
);
|
||
|
// Play audio
|
||
|
my_media.play();
|
||
|
}
|
||
|
|
||
|
|
||
|
### iOS stranezze
|
||
|
|
||
|
* **numberOfLoops**: passare questa opzione per il `play` metodo per specificare il numero di volte desiderato file multimediale per riprodurre, ad esempio:
|
||
|
|
||
|
var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3")
|
||
|
myMedia.play({ numberOfLoops: 2 })
|
||
|
|
||
|
|
||
|
* **playAudioWhenScreenIsLocked**: questa opzione per passare il `play` metodo per specificare se si desidera consentire la riproduzione quando lo schermo è bloccato. Se impostato su `true` (il valore predefinito), viene ignorato lo stato del pulsante mute hardware, ad esempio:
|
||
|
|
||
|
var myMedia = new Media("http://audio.ibeat.org/content/p1rj1s/p1rj1s_-_rockGuitar.mp3")
|
||
|
myMedia.play({ playAudioWhenScreenIsLocked : false })
|
||
|
|
||
|
|
||
|
* **ordine di ricerca di file**: quando viene fornito solo un nome file o percorso semplice, cerca in iOS il `www` directory per il file, quindi l'applicazione `documents/tmp` directory:
|
||
|
|
||
|
var myMedia = new Media("audio/beer.mp3")
|
||
|
myMedia.play() // first looks for file in www/audio/beer.mp3 then in <application>/documents/tmp/audio/beer.mp3
|
||
|
|
||
|
|
||
|
## media.release
|
||
|
|
||
|
Rilascia le risorse audio del sistema operativo sottostante. Ciò è particolarmente importante per Android, dato che ci sono una quantità finita di OpenCore istanze per la riproduzione multimediale. Le applicazioni devono chiamare la funzione di `release` qualsiasi risorsa `Media` non è più necessario.
|
||
|
|
||
|
media.release();
|
||
|
|
||
|
|
||
|
### Esempio rapido
|
||
|
|
||
|
// Audio player
|
||
|
//
|
||
|
var my_media = new Media(src, onSuccess, onError);
|
||
|
|
||
|
my_media.play();
|
||
|
my_media.stop();
|
||
|
my_media.release();
|
||
|
|
||
|
|
||
|
## media.seekTo
|
||
|
|
||
|
Imposta la posizione corrente all'interno di un file audio.
|
||
|
|
||
|
media.seekTo(milliseconds);
|
||
|
|
||
|
|
||
|
### Parametri
|
||
|
|
||
|
* **millisecondi**: posizione per impostare la posizione di riproduzione all'interno l'audio, in millisecondi.
|
||
|
|
||
|
### Esempio rapido
|
||
|
|
||
|
// Audio player
|
||
|
//
|
||
|
var my_media = new Media(src, onSuccess, onError);
|
||
|
my_media.play();
|
||
|
// SeekTo to 10 seconds after 5 seconds
|
||
|
setTimeout(function() {
|
||
|
my_media.seekTo(10000);
|
||
|
}, 5000);
|
||
|
|
||
|
|
||
|
### BlackBerry 10 capricci
|
||
|
|
||
|
* Non è supportato sui dispositivi BlackBerry OS 5.
|
||
|
|
||
|
## media.setVolume
|
||
|
|
||
|
Impostare il volume per un file audio.
|
||
|
|
||
|
media.setVolume(volume);
|
||
|
|
||
|
|
||
|
### Parametri
|
||
|
|
||
|
* **volume**: il volume impostato per la riproduzione. Il valore deve essere all'interno della gamma di 0,0 e 1,0.
|
||
|
|
||
|
### Piattaforme supportate
|
||
|
|
||
|
* Android
|
||
|
* iOS
|
||
|
|
||
|
### Esempio rapido
|
||
|
|
||
|
// Play audio
|
||
|
//
|
||
|
function playAudio(url) {
|
||
|
// Play the audio file at url
|
||
|
var my_media = new Media(url,
|
||
|
// success callback
|
||
|
function() {
|
||
|
console.log("playAudio():Audio Success");
|
||
|
},
|
||
|
// error callback
|
||
|
function(err) {
|
||
|
console.log("playAudio():Audio Error: "+err);
|
||
|
});
|
||
|
|
||
|
// Play audio
|
||
|
my_media.play();
|
||
|
|
||
|
// Mute volume after 2 seconds
|
||
|
setTimeout(function() {
|
||
|
my_media.setVolume('0.0');
|
||
|
}, 2000);
|
||
|
|
||
|
// Set volume to 1.0 after 5 seconds
|
||
|
setTimeout(function() {
|
||
|
my_media.setVolume('1.0');
|
||
|
}, 5000);
|
||
|
}
|
||
|
|
||
|
|
||
|
## media.startRecord
|
||
|
|
||
|
Avvia la registrazione di un file audio.
|
||
|
|
||
|
media.startRecord();
|
||
|
|
||
|
|
||
|
### Piattaforme supportate
|
||
|
|
||
|
* Android
|
||
|
* iOS
|
||
|
* Windows Phone 7 e 8
|
||
|
* Windows
|
||
|
|
||
|
### Esempio rapido
|
||
|
|
||
|
// Record audio
|
||
|
//
|
||
|
function recordAudio() {
|
||
|
var src = "myrecording.mp3";
|
||
|
var mediaRec = new Media(src,
|
||
|
// success callback
|
||
|
function() {
|
||
|
console.log("recordAudio():Audio Success");
|
||
|
},
|
||
|
|
||
|
// error callback
|
||
|
function(err) {
|
||
|
console.log("recordAudio():Audio Error: "+ err.code);
|
||
|
});
|
||
|
|
||
|
// Record audio
|
||
|
mediaRec.startRecord();
|
||
|
}
|
||
|
|
||
|
|
||
|
### Stranezze Android
|
||
|
|
||
|
* Dispositivi Android registrano audio in formato Adaptive Multi-Rate. Il file specificato deve terminare con l'estensione ** .
|
||
|
* I controlli di volume di hardware sono cablati a volume media mentre eventuali oggetti multimediali sono vivi. Una volta l'ultimi Media creati oggetto ha `release()` chiamato su di esso, i controlli di volume di tornare alla loro comportamento predefinito. I controlli vengono reimpostati anche sulla pagina di navigazione, come questo rilascia tutti gli oggetti multimediali.
|
||
|
|
||
|
### iOS stranezze
|
||
|
|
||
|
* iOS solo i record per i file di tipo *WAV* e restituisce un errore se il file di nome estensione è non corretto.
|
||
|
|
||
|
* Se non è specificato un percorso completo, la registrazione viene inserita nell'applicazione `documents/tmp` directory. Questo si può accedere tramite il `File` API utilizzando `LocalFileSystem.TEMPORARY` . Deve esistere alcuna sottodirectory specificate a tempo di record.
|
||
|
|
||
|
* I file possono essere registrati e giocati indietro usando i documenti URI:
|
||
|
|
||
|
var myMedia = new Media("documents://beer.mp3")
|
||
|
|
||
|
|
||
|
### Stranezze di Windows
|
||
|
|
||
|
* Se non è specificato un percorso completo, la registrazione viene inserita nella directory AppData/temp. Questo si può accedere tramite il `File` Utilizzando API `LocalFileSystem.TEMPORARY` o ' ms-appdata: / / temp /<filename>' URI.
|
||
|
|
||
|
* Deve esistere alcuna sottodirectory specificate a tempo di record.
|
||
|
|
||
|
### Tizen stranezze
|
||
|
|
||
|
* Tizen periferiche non supportano.
|
||
|
|
||
|
## media.stop
|
||
|
|
||
|
Interrompe la riproduzione di un file audio.
|
||
|
|
||
|
media.stop();
|
||
|
|
||
|
|
||
|
### Esempio rapido
|
||
|
|
||
|
// Play audio
|
||
|
//
|
||
|
function playAudio(url) {
|
||
|
// Play the audio file at url
|
||
|
var my_media = new Media(url,
|
||
|
// success callback
|
||
|
function() {
|
||
|
console.log("playAudio():Audio Success");
|
||
|
},
|
||
|
// error callback
|
||
|
function(err) {
|
||
|
console.log("playAudio():Audio Error: "+err);
|
||
|
}
|
||
|
);
|
||
|
|
||
|
// Play audio
|
||
|
my_media.play();
|
||
|
|
||
|
// Pause after 10 seconds
|
||
|
setTimeout(function() {
|
||
|
my_media.stop();
|
||
|
}, 10000);
|
||
|
}
|
||
|
|
||
|
|
||
|
## media.stopRecord
|
||
|
|
||
|
Smette di registrare un file audio.
|
||
|
|
||
|
media.stopRecord();
|
||
|
|
||
|
|
||
|
### Piattaforme supportate
|
||
|
|
||
|
* Android
|
||
|
* iOS
|
||
|
* Windows Phone 7 e 8
|
||
|
* Windows
|
||
|
|
||
|
### Esempio rapido
|
||
|
|
||
|
// Record audio
|
||
|
//
|
||
|
function recordAudio() {
|
||
|
var src = "myrecording.mp3";
|
||
|
var mediaRec = new Media(src,
|
||
|
// success callback
|
||
|
function() {
|
||
|
console.log("recordAudio():Audio Success");
|
||
|
},
|
||
|
|
||
|
// error callback
|
||
|
function(err) {
|
||
|
console.log("recordAudio():Audio Error: "+ err.code);
|
||
|
}
|
||
|
);
|
||
|
|
||
|
// Record audio
|
||
|
mediaRec.startRecord();
|
||
|
|
||
|
// Stop recording after 10 seconds
|
||
|
setTimeout(function() {
|
||
|
mediaRec.stopRecord();
|
||
|
}, 10000);
|
||
|
}
|
||
|
|
||
|
|
||
|
### Tizen stranezze
|
||
|
|
||
|
* Tizen periferiche non supportano.
|
||
|
|
||
|
## Errore MediaError
|
||
|
|
||
|
Un oggetto ` MediaError` viene restituito alla funzione di callback ` mediaError` quando si verifica un errore.
|
||
|
|
||
|
### Proprietà
|
||
|
|
||
|
* **codice**: uno dei codici di errore predefiniti elencati di seguito.
|
||
|
|
||
|
* **messaggio**: un messaggio di errore che descrive i dettagli dell'errore.
|
||
|
|
||
|
### Costanti
|
||
|
|
||
|
* `MediaError.MEDIA_ERR_ABORTED`= 1
|
||
|
* `MediaError.MEDIA_ERR_NETWORK`= 2
|
||
|
* `MediaError.MEDIA_ERR_DECODE`= 3
|
||
|
* `MediaError.MEDIA_ERR_NONE_SUPPORTED`= 4
|