Intereting Posts
Android: Mediaplayer: как использовать SurfaceView или медиаплеер для воспроизведения видео в правильном размере Стилизация SearchView в панели действий Android Атрибут insetForeground уже определен Получить исходный адаптер из expandablelistview с заголовком Использование метода BottomSheetBehavior с внутренним координаторомLayout Programmatic Views Как установить уникальный идентификатор? Android-декодер-> декодирование возвращено false для Bitmap download Распознавание голоса прекращает прослушивание через несколько секунд Падение панорамы Android Fragment Transition Как работает автоматическое восстановление фрагментов Отправить тему по названию Openssl не распознается как внутренняя или внешняя команда Масштабировать изображение, чтобы заполнить ширину ImageView и сохранить пропорции Как начать работу или услугу до того, как приложение будет удалено пользователем? Как я могу проверить, сколько свободного места на карте SD, установленной на устройстве Android?

Веб-просмотр Android не может отображать видео youtube, встроенное через iframe

Речь идет о загрузке видео youtube с использованием новейшего встроенного формата (iframe) внутри webview.

Пример формата вставки iframe

<iframe width="637" height="358" src="http://www.youtube.com/embed/olC42gO-Ln4?fs=1&amp;feature=oembed" frameborder="0" allowfullscreen=""></iframe> 

Проверьте код на устройствах Android 2.3.3 и 3.2 (HTC Desire & Asus Transformer), веб-просмотр будет отображать только черный прямоугольник.

Я пробовал аналогичную вставку из vimeo

 <iframe src="http://player.vimeo.com/video/35693267" width="640" height="360" frameborder="0"></iframe> 

В 2.3 воспроизводится видео
В 3.2 черный прямоугольник вспыхнул и исчез, область iframe пуста.

Наконец, если используется старый формат вставки (с использованием тега объекта), видео отображается правильно внутри webview в 2.3.3 и 3.2.

Я проверил связанные вопросы и добавил

 android:hardwareAccelerated="true" 

В теге приложения и / или активности, но по-прежнему нет видео в обоих устройствах 2.3 и 3.2.

Это большая проблема, потому что больше веб-сайтов теперь использует новейший формат (iframe) для встраивания своих видео в YouTube. Android / Youtube Team, пожалуйста, взгляните на эту проблему.

Solutions Collecting From Web of "Веб-просмотр Android не может отображать видео youtube, встроенное через iframe"

Android-браузеры абсолютно бесполезны, что происходит с воспроизведением видео и вложением. Он просто не работает через устройства. Попытка заставить его работать – это просто трата вашего времени. Мое предложение состоит в том, что вы не пытаетесь включить <iframe> а просто предоставляете миниатюру видео, которое напрямую ссылается на страницу YouTube или файл h264.

Предыдущее обсуждение, с возможным решением.

Оптимизация WebViews на Android в Google Reader-esque

Если вы хотите воспроизводить видео в своем WebView вам НЕОБХОДИМО загружать данные базовым URL-адресом!

Не делайте этого:

 mContentWebView.loadDataWithBaseURL(null, webViewContentString, "text/html", "UTF-8", null); 

ДЕЛАТЬ ЭТО ВМЕСТО :

  //veryVeryVery important for playing the videos! mContentWebView.loadDataWithBaseURL(theBaseUrl, webViewConentString, "text/html", "UTF-8", null); 

Базовый URL будет чем-то вроде «оригинального» URL-адреса того, что вы показываете в своем WebView . Итак, скажем, вы создаете читателя WebView's базовый url WebView's URL-адресом оригинальной истории.

Удачи!

Также не забудьте настроить свой WebView … Например …

  mContentWebView.setWebChromeClient(new WebChromeClient()); mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON); mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); mContentWebView.setWebViewClient(new WebViewClient()); mContentWebView.getSettings().setJavaScriptEnabled(true); 

Вам необходимо включить аппаратное ускорение в манифесте (доступно только на SDK 14 и выше).

Ex. Аппаратное ускорение включено:

 <application android:name="com.example.app" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:hardwareAccelerated="true"> <!-- hardwareAccelerated requires SDK 14 --> ... </application> 

Поддержка видео HTML5

Чтобы поддерживать встроенное видео HTML5 в вашем приложении, вам необходимо включить аппаратное ускорение и установить WebChromeClient .

http://developer.android.com/reference/android/webkit/WebView.html

(Надеюсь, что это поможет кому-то)

Я бы предложил использовать некоторый код для обнаружения среды пользователя … использовать код iframe только для ios-устройств (iphone, ipod, ipad) и использовать старый код для всех остальных.

Этот код полностью соответствует различным устройствам

 webView.setInitialScale(1); webView.setWebChromeClient(new WebChromeClient()); webView.getSettings().setAllowFileAccess(true); webView.getSettings().setPluginState(WebSettings.PluginState.ON); webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND); webView.setWebViewClient(new WebViewClient()); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int width = displaymetrics.widthPixels; Log.e(SimpleBillsConstants.SIMPLE_BILLS, width + "-" + height); String data_html = "<!DOCTYPE html><html> <head> <meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"target-densitydpi=high-dpi\" /> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"> <link rel=\"stylesheet\" media=\"screen and (-webkit-device-pixel-ratio:1.5)\" href=\"hdpi.css\" /></head> <body style=\"background:black;margin:0 0 0 0; padding:0 0 0 0;\"> <iframe style=\"background:black;\" width=' "+width+"' height='"+height+"' src=\""+ VIDEO_URL+"\" frameborder=\"0\"></iframe> </body> </html> "; webView.loadDataWithBaseURL("http://vimeo.com", data_html, "text/html", "UTF-8", null); 

Это сработало для меня – код открывает сайт YouTube и может воспроизводить его видео в WebView:

 mWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = mWebView.getSettings(); webSettings.setJavaScriptEnabled(true); String frameVideo = "<html><body>Youtube video .. <br> <iframe width=\"320\" height=\"315\" src=\"https://www.youtube.com/\" frameborder=\"0\" allowfullscreen></iframe></body></html>"; mWebView.loadData(frameVideo, "text/html", "utf-8"); mWebView.loadUrl("http://www.youtube.com/"); mWebView.setWebViewClient(new WebViewClient());