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