Тут я розповідаю, як мій друг вирішив проблему відображення відео в 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. Усі кредити за це рішення належать Димитру Златкові Димитрову.