Qui includo come un mio amico ha risolto il problema della visualizzazione dei video in HTML in Nexus One:
Non sono mai riuscito a riprodurre il video in linea. In realtà molte persone su Internet menzionano esplicitamente che la riproduzione di video in linea in HTML è supportata da Honeycomb, e stavamo litigando con Froyo e Gingerbread ... Anche per i telefoni più piccoli penso che giocare a schermo intero sia molto naturale, altrimenti non è molto visibile . Quindi l'obiettivo era quello di rendere il video aperto a schermo intero. Tuttavia, le soluzioni proposte in questo thread non hanno funzionato per noi: il clic sull'elemento non ha attivato nulla. Inoltre sono stati mostrati i controlli video, ma non è stato visualizzato alcun poster, quindi l'esperienza dell'utente è stata ancora più strana. Quindi quello che ha fatto è stato il seguente:
Esponi il codice nativo all'HTML per essere richiamabile tramite javascript:
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
Il codice stesso aveva una funzione che chiamava attività nativa per riprodurre il video:
public class JavaScriptInterface {
private Activity activity;
public JavaScriptInterface(Activity activiy) {
this.activity = activiy;
}
public void startVideo(String videoAddress){
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); // The Mime type can actually be determined from the file
activity.startActivity(intent);
}
}
Quindi nello stesso HTML ha continuato a fallire nel far funzionare il tag video riproducendo il video. Così, alla fine, ha deciso di sovrascrivere l' onclick
evento del video, facendogli fare la riproduzione vera e propria. Questo ha quasi funzionato per lui - tranne per il fatto che nessun poster è stato visualizzato. Ecco la parte più strana: continuava a ricevere ERROR/AndroidRuntime(7391): java.lang.RuntimeException: Null or empty value for header "Host"
ogni volta che impostava l' poster
attributo del tag. Alla fine ha trovato il problema, il che era molto strano: si è scoperto che aveva mantenuto il source
sottotag nel video
tag, ma non lo ha mai usato. E abbastanza strano proprio questo stava causando il problema. Ora guarda la sua definizione della video
sezione:
<video width="320" height="240" controls="controls" poster='poster.gif' onclick="playVideo('file:///sdcard/test.3gp');" >
Your browser does not support the video tag.
</video>
Ovviamente è necessario aggiungere anche la definizione della funzione javascript in testa alla pagina:
<script>
function playVideo(video){
window.JSInterface.startVideo(video);
}
</script>
Mi rendo conto che questa non è una soluzione puramente HTML, ma è il meglio che siamo riusciti a fare per il tipo di telefono Nexus One. Tutti i crediti per questa soluzione vanno a Dimitar Zlatkov Dimitrov.