Здесь я привожу, как мой друг решил проблему отображения видео в 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"); // The Mime type can actually be determined from the file
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.
Все кредиты для этого решения идут Димитру Златкову Димитрову.