2013-02-20 4 views
5

Sto provando a riprodurre l'audio utilizzando un tag HTML5 Audio sul mio telefono. Ho caricato il suono ma quando eseguo il comando .play(), non succede nulla. Ho reso visibili i controlli predefiniti in modo da eseguire il test premendo quel pulsante di riproduzione e quello funziona e il suono viene riprodotto. Ho anche provato a riprodurre il suono eseguendo il javascript dalla barra degli indirizzi e questo funziona anche.Android non riproduce l'audio html5 da un intervallo

Il codice che sto usando per giocare sembra qualcosa di simile:

setInterval(function(){ 
    if(blahblah){ 
     document.getElementById("player").play(); 
    } 
},500); 

Per assicurarsi che ancora cerca di riprodurre il suono, ho messo un avviso dopo che, in questo modo:

setInterval(function(){ 
    if(blahblah){ 
     document.getElementById("player").play(); 
     alert("Played!"); 
    } 
},500); 

Ho visto l'avviso, ma non è stato riprodotto alcun suono.

Grazie per qualsiasi aiuto :)

+0

Nessuno sa cosa c'è che non va? – JerwuQu

+0

Sto riscontrando un problema simile, anche se ho provato di tutto. Howler.js, Soundmanager2, ecc. Non funziona nulla. :( – Jared

risposta

1

maggior parte dei dispositivi mobili saranno solo permetterà di giocare audio quando è il risultato di un'interazione con l'utente. Se inserisci il tuo codice di riproduzione in un evento click del pulsante, dovrebbe funzionare (supponendo che non ci siano altri bug nel codice), ma il dispositivo impedisce l'audio dall'interno di setInterval perché non ritiene di avere il permesso dell'utente per giocarci.

Cosa faccio ora, e ammetto che questa è una soluzione alternativa, sto riproducendo e interrompo immediatamente l'audio all'interno del mio evento click sui pulsanti, quindi chiamo setInterval. Funziona - per ora - perché il dispositivo pensa che sia stato concesso il permesso di riprodurre quell'audio da parte dell'utente, anche se l'avvio in seguito. Il codice dentro il mio pulsante di scatto evento assomiglia a questo:

document.getElementById("player").play(); 
document.getElementById("player").pause(); 

setInterval(function(){ 
    document.getElementById("player").play(); 
}, 500); 

Tenete a mente che sul cellulare, non può giocare quasi nel modo migliore, come fa sul computer. Cerca approcci alternativi ove possibile.