2013-08-30 2 views
3

Я пытаюсь создать приложение, которое отображает WebView со встроенным iframe, в котором будет показано видео Vimeo. Когда я загружаю WebView, iframe - это просто черный ящик, который не покажет видео или ничего не сделает, когда я нажму на него.Показать Vimeo в WebView iFrame на Android

mWebView = (WebView)v.findViewById(R.id.webView); 
mWebView.getSettings().setAllowFileAccess(true); 
mWebView.getSettings().setBuiltInZoomControls(true); 
mWebView.getSettings().setSupportZoom(true); 
mWebView.getSettings().setUseWideViewPort(true); 
mWebView.getSettings().setLoadWithOverviewMode(true); 
mWebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 

mWebView.getSettings().setSaveFormData(true); 
mWebView.getSettings().setJavaScriptEnabled(true); 

String data = new String("<html xmlns='http://www.w3.org/1999/xhtml' xmlns:fb='http://ogp.me/ns/fb#'><head>" + 
"<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />" + 
"<title>Northern African and Middle Eastern Peoples </title>" + 
"<link rel='stylesheet' href='./style.css' type='text/css' media='screen' /></head><body>" + 
"<div id='content'><div class='post'>" + 

"<iframe style='margin-top:10px; margin-bottom:10px;' src=http://player.vimeo.com/video/" + mRssVideoItem.getVimeoId() + "?title=0&byline=0&portrait=0' width='880' height='497' frameborder='0'>" + 
"</iframe><h1>" + mRssVideoItem.getTitle() + "</h1><div class='timestamp'>" + formattedDate + "</div>" + mRssVideoItem.getDescription() + "</div></div></body></html>"); 

mWebView.setWebViewClient(new WebViewClient(){ 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    return false; 
} 
}); 
mWebView.loadDataWithBaseURL("file:///android_asset/.", data, "text/html", "UTF-8", null); 

Я искал несколько дней и не могу найти ничего, что поможет.

Обновление: Я до сих пор борюсь с этим. У меня есть несколько разных вещей, которые я не совсем понимаю. Сначала я подумал, что у меня есть Vimeo Videos, используя приведенное ниже предложение. Тем не менее, я вернулся к проекту сегодня, и я просто вижу черный ящик. Другой проблемой является «масштабирование» представления. Иногда, когда я загружаю видео, на экране появляется весь вид. В других случаях это похоже на то, что изображение масштабируется, и слова намного больше, чем я думал. Кажется, что это также изменилось, когда я изменяю вращение устройства. Ниже приведен HTML, который я использую с loadDataWithBaseURL.

http://www.w3.org/1999/xhtml «XMLNS: FB =» http://ogp.me/ns/fb# «> Северная Африки и Ближнего Востока народов

Никто, кроме Бога

14 мая, 2013A молодой сирийский отец разделяет историю его спасение семьи от сирийской гражданской войны и их борьба за поиски новой жизни в Иордании.


Предложение выше, кажется, работает до тех пор, пока я не изменить WebSettings LayoutAlgorithm к NARROW_COLUMNS. Кто-нибудь знает, почему это не позволит показывать видео? Второй вопрос - иногда, когда «страница» загружает все, выглядит великолепно, а в других случаях контент действительно большой, и изображение уходит со стороны экрана. Кажется, что это может иметь какое-то отношение к вращению, масштабированию или инициализации, поскольку, если я повернусь к пейзажу и вернусь к портрету, изображение, похоже, исправит себя. См. Изображения ниже.

Good Image

Bad Image

ответ

0

Я на самом деле нашел способ воспроизведения видео Vimeo в внутри WebView, глядя вокруг несколько дней назад. Вы можете проверить код here. Он использует HTML5WebView от this другого проекта.

Но HTML5WebView - это всего лишь обертка вокруг обычного специально настроенного WebView воспроизведения видео. В частности, вам необходимо:

1- Включить Javascript 2- Внедрить класс, расширяющий WebChromeClient, и реализовать методы onShowCustomView и onHideCustomView.

Моя проблема теперь связана с захватом этих элементов управления, которые вы видите, когда видео полноэкранное. Если вам или кому-то еще удастся это сделать, любая помощь будет оценена по достоинству.

Nelson

+1

Спасибо за предложение. Кажется, я не мог получить код, на который вы ссылались, чтобы работать. Он будет отображать начальную страницу, но тогда она не будет воспроизводить видео. – James

+0

Я получил его на работу, но мне пришлось использовать Activity (как в примере) вместо фрагмента. Кто-нибудь использовал это или что-то подобное с Фрагментом? – James

+0

@James: Я пытаюсь показать видео vimeo во фрагменте. У вас есть код? Я использую webview (при использовании html5webview он показывает ошибку), иногда видео работает ... несколько раз не .. – zacharia

Смежные вопросы