Тут я розповідаю, як мій друг вирішив проблему відображення відео в HTML на Nexus One:
Я ніколи не міг змусити відео відтворюватися в режимі онлайн. Насправді багато людей в Інтернеті прямо згадують, що вбудоване відтворення відео в HTML підтримується з часів Honeycomb, і ми боролися з Froyo та Gingerbread ... Також для менших телефонів я вважаю, що грати в повноекранний режим дуже природно - інакше не так багато видно . Тож метою було зробити відео відкритим на весь екран. Однак запропоновані рішення в цій темі для нас не працювали - натискання на елемент нічого не викликало. Крім того, було показано відеорегулятори, але жоден плакат не відображався, тому користувальницький досвід був ще дивнішим. Отже, він зробив наступне:
Виставляйте власний код у HTML, щоб його можна було викликати через javascript:
JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");
Сам код мав функцію, яка називала рідну активність для відтворення відео:
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);
}
}
Потім у самому HTML він продовжував невдало змусити відеотег працювати під час відтворення відео. Таким чином, нарешті, він вирішив замінити onclick
подію відео, змусивши його виконати справжню гру. Це майже спрацювало для нього - за винятком того, що жоден плакат не відображався. Ось найдивніша частина - він продовжував отримувати ERROR/AndroidRuntime(7391): java.lang.RuntimeException: Null or empty value for header "Host"
кожен раз, коли встановлював poster
атрибут тегу. Нарешті він виявив проблему, яка була дуже дивною - виявилося, що він містив source
підтег у video
тезі, але ніколи не використовував його. І досить дивно, що саме це спричинило проблему. Тепер подивіться його визначення video
розділу:
<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>
Звичайно, вам також потрібно додати визначення функції javascript в голівці сторінки:
<script>
function playVideo(video){
window.JSInterface.startVideo(video);
}
</script>
Я усвідомлюю, що це не суто рішення HTML, але це найкраще, що ми змогли зробити для телефону типу Nexus One. Усі кредити за це рішення належать Димитру Златкові Димитрову.