Oto, jak mój znajomy rozwiązał problem wyświetlania filmów w HTML w Nexus One:
Nigdy nie udało mi się odtworzyć wideo w tekście. Właściwie wiele osób w Internecie wspomina wyraźnie, że odtwarzanie wideo w kodzie HTML jest obsługiwane od Honeycomb, a my walczyliśmy z Froyo i Gingerbread ... Również w przypadku mniejszych telefonów uważam, że granie na pełnym ekranie jest bardzo naturalne - w przeciwnym razie niewiele widać . Celem było więc, aby wideo było otwarte na pełnym ekranie. Jednak proponowane rozwiązania w tym wątku nie zadziałały u nas - kliknięcie na element nic nie wyzwoliło. Ponadto pokazano elementy sterujące wideo, ale żaden plakat nie został wyświetlony, więc wrażenia użytkownika były jeszcze dziwniejsze. Więc co zrobił, było następujące:
Wyświetlaj kod natywny w kodzie HTML, aby można go było wywołać przez javascript:
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
Sam kod miał funkcję, która nazywała aktywność natywną do odtwarzania wideo:
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");
activity.startActivity(intent);
}
}
Następnie w samym HTML nie udawało się, aby tag wideo działał odtwarzając wideo. Dlatego w końcu zdecydował się nadpisać onclick
wydarzenie z wideo, sprawiając, że zostanie ono odtworzone. To prawie mu się udało - poza tym, że żaden plakat nie został wyświetlony. Oto najbardziej dziwna część - otrzymywał za ERROR/AndroidRuntime(7391): java.lang.RuntimeException: Null or empty value for header "Host"
każdym razem, gdy ustawiał poster
atrybut tagu. W końcu znalazł problem, co było bardzo dziwne - okazało się, że zachował source
subtag w video
tagu, ale nigdy go nie użył. I co było dość dziwne, właśnie to powodowało problem. Teraz zobacz jego definicję video
sekcji:
<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>
Oczywiście musisz też dodać definicję funkcji javascript w nagłówku strony:
<script>
function playVideo(video){
window.JSInterface.startVideo(video);
}
</script>
Zdaję sobie sprawę, że nie jest to wyłącznie rozwiązanie HTML, ale jest to najlepsze, co mogliśmy zrobić dla telefonu typu Nexus One. Wszystkie kredyty za to rozwiązanie należą do Dimitar Zlatkov Dimitrov.