Hier füge ich hinzu, wie ein Freund das Problem der Anzeige von Videos in HTML in Nexus One gelöst hat:
Ich konnte das Video nie inline abspielen lassen. Tatsächlich erwähnen viele Leute im Internet ausdrücklich, dass Inline-Videowiedergabe in HTML seit Honeycomb unterstützt wird, und wir haben mit Froyo und Gingerbread gekämpft ... Auch für kleinere Telefone denke ich, dass das Abspielen im Vollbildmodus sehr natürlich ist - ansonsten ist nicht so viel sichtbar . Ziel war es also, das Video im Vollbildmodus zu öffnen. Die in diesem Thread vorgeschlagenen Lösungen funktionierten jedoch nicht für uns - das Klicken auf das Element löste nichts aus. Darüber hinaus wurden die Videokontrollen angezeigt, es wurde jedoch kein Poster angezeigt, sodass die Benutzererfahrung noch seltsamer war. Also tat er Folgendes:
Stellen Sie nativen Code in den HTML-Code ein, um ihn über Javascript aufzurufen:
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
Der Code selbst hatte eine Funktion, die native Aktivität zum Abspielen des Videos aufrief:
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);
}
}
Dann scheiterte er im HTML selbst immer wieder daran, dass das Video-Tag das Video abspielte. Schließlich beschloss er, das onclick
Ereignis des Videos zu überschreiben , damit es das eigentliche Spiel abspielt. Dies funktionierte fast für ihn - außer dass kein Poster angezeigt wurde. Hier kommt der seltsamste Teil - er erhielt ERROR/AndroidRuntime(7391): java.lang.RuntimeException: Null or empty value for header "Host"
jedes Mal, wenn er das poster
Attribut des Tags festlegte. Schließlich fand er das Problem, das sehr seltsam war - es stellte sich heraus, dass er den source
Untertag im video
Tag behalten hatte , ihn aber nie benutzte. Und seltsamerweise verursachte genau dies das Problem. Siehe nun seine Definition des video
Abschnitts:
<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>
Natürlich müssen Sie auch die Definition der Javascript-Funktion im Kopf der Seite hinzufügen:
<script>
function playVideo(video){
window.JSInterface.startVideo(video);
}
</script>
Mir ist klar, dass dies keine reine HTML-Lösung ist, sondern das Beste, was wir für den Nexus One-Telefontyp tun konnten. Alle Credits für diese Lösung gehen an Dimitar Zlatkov Dimitrov.