我正在拼凑一个廉价的应用程序,其中包括"框架"我们的一些网站...非常简单的WebViewClient.直到我点击视频.
该视频是作为HTML5 元素完成的,这些在Chrome,iPhone上工作得很好,现在我们修复了它Android在本机浏览器中运行良好的编码问题.
摩擦:WebView不喜欢它.完全没有.我可以点击海报图片,没有任何反应.
谷歌搜索,我发现这是接近,但似乎是基于'链接'(如在href ...)而不是视频元素.(onDownloadListener似乎没有在视频元素上调用...)
我也看到覆盖onShowCustomView的引用,但似乎没有在视频元素上调用...还没有shouldOverrideUrlLoading ..
我宁愿不进入"从服务器拉xml,在应用程序中重新格式化"......通过在服务器上保留故事布局,我可以更好地控制内容而不强迫人们不断更新应用程序.因此,如果我可以说服WebView处理像本机浏览器这样的标签,那将是最好的.
我显然错过了一些明显的东西..但我不知道是什么.
我有运行的一个问题嵌入HTML5的Youtube在网页视图.我想在我的应用程序上播放Youtube视频.我决定使用WebView而不是VideoView,因为我想让我的系统更灵活地从网上播放视频.
虽然有很多方法可以在Android上玩youtube,但我会使用youtube嵌入式版本." http://www.youtube.com/embed/___________________ ".因为这是我在你的android不支持flash时发现的解决方案之一.
问题:
WebView正常加载,包括嵌入的Youtube.但是我开始在youtube上看到黑屏.
当我点击它.它仅加载第一个图像,但之后它不播放.我尝试在Android浏览器上播放,它运行顺畅但不在webView中.
知道为什么吗?
以下只是我的代码片段:
WebView wv = new WebView(getApplicationContext());
wv.getSettings().setPluginState(PluginState.ON);
wv.getSettings().setJavaScriptEnabled(true);
wv.loadUrl("http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html");
setContentView(wv);
Run Code Online (Sandbox Code Playgroud)
以下是我发现非常有用的一些资源:
http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html
http://www.broken-links.com/2009/10/06/building-html5-video-controls-with-javascript/
提前感谢您的支持和帮助:)
更新(2011年6月13日):
我成功加载了WebView中的http://m.youtube.com,但无法播放任何视频.但是当我尝试在我的Android浏览器上加载URL时,它可以播放.
从这里开始,我注意到我的WebView上的youtube站点没有登录.那么我们如何允许WebView使用与我手机中的Youtube帐户相同的凭据?它真的有效吗?
我有Activity一个WebView.我有一个WebChromeClient里面.在其中,有几个回调旨在返回MediaPlayer处理视频位.例如:
@Override
public void onPrepared(MediaPlayer mp) {
Log.i(TAG, " -------------> onPrepared");
}
Run Code Online (Sandbox Code Playgroud)
当我将MP4流加载到WebView使用HTML <video>标记(通过注入)时,这些都无法触发.
当我finish()进行活动时,logcat会报告这个:
09-13 23:55:24.590: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to send MEDIA_BUFFERING_UPDATE message.
09-13 23:55:24.680: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to send MEDIA_BUFFERING_UPDATE message.
09-13 23:55:24.680: E/MediaPlayer(7949): mOnVideoSizeChangedListener is null. Failed to send MEDIA_SET_VIDEO_SIZE message.
09-13 23:55:25.675: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to send MEDIA_BUFFERING_UPDATE message.
09-13 23:55:26.735: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to …Run Code Online (Sandbox Code Playgroud) 我的网页使用html5视频标签记录了视频文件.
我有一个嵌入式Web服务器(NanoHTTPD)运行,它从文件系统提供我的文件.其他一切都有效,但是当我点击播放HTML5视频时.它会出现以下错误,并且不播放视频
09-29 20:38:36.620: D/HTML5VideoInline(11532): HTML5VideoInline created
09-29 20:38:36.625: V/MediaPlayer(11532): setVideoSurfaceTexture
09-29 20:38:36.625: V/MediaPlayer-JNI(11532): reset
09-29 20:38:36.625: V/MediaPlayer(11532): reset
09-29 20:38:36.625: I/MediaPlayer(11532): path is null
09-29 20:38:36.640: D/MediaPlayer(11532): setDataSource IOException happend :
09-29 20:38:36.640: D/MediaPlayer(11532): java.io.FileNotFoundException: No content provider: http://10.207.114.115:8765/SLC/Book3_html/Book3/book/BO/demo.mp4
09-29 20:38:36.640: D/MediaPlayer(11532): at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:713)
09-29 20:38:36.640: D/MediaPlayer(11532): at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:617)
09-29 20:38:36.640: D/MediaPlayer(11532): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:954)
09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoView.prepareDataCommon(HTML5VideoView.java:326)
09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoView.prepareDataAndDisplayMode(HTML5VideoView.java:363)
09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoInline.prepareDataAndDisplayMode(HTML5VideoInline.java:72)
09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoViewProxy$VideoPlayer.play(HTML5VideoViewProxy.java:289)
09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoViewProxy.handleMessage(HTML5VideoViewProxy.java:465) …Run Code Online (Sandbox Code Playgroud) 我需要在WebView中内联播放html5视频.我发现了一种应该可行的技术,但它只能偶尔发挥作用(见问题末尾).如果它不起作用,则不会调用onShowCustomView.任何人都可以看到这个不起作用的原因或提出替代方案吗?
package com.richcollins.VideoView;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.FrameLayout;
import android.widget.VideoView;
public class WebViewActivity extends Activity
{
WebView webView;
FrameLayout frameLayout;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflator = getLayoutInflater();
View inflatedView = inflator.inflate(R.layout.webview, null);
if (!(inflatedView instanceof FrameLayout))
{
throw new RuntimeException("inflated view not FrameLayout");
}
else
{
frameLayout = (FrameLayout)inflatedView;
}
setContentView(frameLayout);
webView = (WebView) findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.setWebChromeClient(new …Run Code Online (Sandbox Code Playgroud) 我正在使用Android Webview播放html5视频,包括Youtube视频(我自己的标签和Youtube嵌入式iFrame).在以下情况下,我遇到了Samsung Galaxy S4的问题:
我在具有两种Webview的测试环境中尝试了这一点:"常规"Android Webview和HTML5 webview
我看到的唯一"可疑"的事情是在按下"后退"时出错(Android错误):
sendUserActionEvent() mView == null
Run Code Online (Sandbox Code Playgroud)
这是Galaxy S4问题吗?Android问题?任何的想法?
tnx,Yaniv
我的全屏视频网页视图几乎总是在打开后立即关闭,有时它可以工作.几乎每次我点击YouTube视频上的全屏按钮时,您都可以看到屏幕闪烁到全屏并恢复原状.这可能是什么原因?
webview显示在tablayout/viewpager设置中,其中包含一些其他片段.
我用这段代码来显示视频:https: //github.com/cprcrack/VideoEnabledWebView
它们产生完全相同的行为.
全屏失败时记录并在打开后立即恢复正常:
07-14 17:41:06.694 D/ViewRootImpl@33432e1[GroupActivity]: ViewPostImeInputStage processPointer 0
07-14 17:41:06.786 D/ViewRootImpl@33432e1[GroupActivity]: ViewPostImeInputStage processPointer 1
07-14 17:41:06.803 D/InputMethodManager: HSI from window - flag : 0 Pid : 6392
07-14 17:41:07.512 D/ViewRootImpl@33432e1[GroupActivity]: ViewPostImeInputStage processPointer 0
07-14 17:41:07.592 D/ViewRootImpl@33432e1[GroupActivity]: ViewPostImeInputStage processPointer 1
07-14 17:41:07.615 D/InputMethodManager: HSI from window - flag : 0 Pid : 6392
07-14 17:41:07.709 V/InputMethodManager: Starting input: tba=android.view.inputmethod.EditorInfo@3e22579 nm : com.linkhubapp ic=null
07-14 17:41:07.709 I/InputMethodManager: [IMM] startInputInner - mService.startInputOrWindowGainedFocus
07-14 17:41:07.713 …Run Code Online (Sandbox Code Playgroud) 我正在创建一个移动网站,我有一个视频,当有人点击链接时我想玩这个视频:
<div id="player"></div>
<a href="#" onclick="DoNav('<?php echo $url; ?>');" title="Click to play video"> <?php echo $result_videos[$i]["camera_name"]; ?> </a>
<script type="text/javascript">
function DoNav(theUrl)
{
// only add the player if it doesn't yet exist
if($('#myfileplayer').length == 0) {
var mydiv = $("#player");
var myvideo = $("<video id='myfileplayer' src='"+ theUrl + "' width='320' height='240' controls></video>");
mydiv.append(myvideo);
} else {
$('#myfileplayer').attr("src",theUrl);
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
使用iPhone,这很好用,我点击视频,它全屏显示.Android也可以使用,但它需要您点击要播放的视频然后点击全屏.当你上场时,是否可以像iPhone一样进入全屏?
我创建了一个带有多个视频标签的简单HTML页面,并尝试在WebViewAndroid 4.2.2 本机上同时播放所有视频.但它适用于Android 4.2.2的Chrome浏览器.还尝试chrome-webview从我的应用程序中的GitHub捆绑使用android-chrome WebView类对象而不是本机webkit-engine/webview.它在HTML页面上显示播放器,但任何视频都无法播放.
我不明白为什么会这样,因为我甚至尝试过chrome-webview代码并获得相同的结果,请为我建议一些解决方案或替代方案.
我可以分享我的HTML代码
<!DOCTYPE html>
<html>
<head>
<script>
function init() {
enableVideoClicks();
}
function enableVideoClicks() {
var videos = document.getElementsByTagName('video') || [];
for (var i = 0; i < videos.length; i++) {
// TODO: use attachEvent in IE
videos[i].addEventListener('click', function(videoNode) {
return function() {
videoNode.play();
};
}(videos[i]));
}
}
</script>
</head>
<body onload="init()">
<video src="movie1.mp4" poster = "l.jpg" width="400" height="300" autoplay controls loop></video>
<video src="movie2.mp4" poster = …Run Code Online (Sandbox Code Playgroud) 更新
我已更新我的问题以隐藏机密代码。
如果仍然有一些困惑,请在评论中给我留言。
题
我编写了一个自定义 Webview,用于播放嵌入在我网站中的 youtube 视频以全屏显示。
但它仍然无法正常工作... 请帮助
public class MainActivity extends Activity implements OnClickListener {
final Context context = this;
private WebView webView;
private ImageButton btnrefresh;
private TextView txtrefresh;
private myWebChromeClient mWebChromeClient;
private Menu optionsMenu;
private WebChromeClient.CustomViewCallback customViewCallback;
private View mCustomView;
private FrameLayout customViewContainer;
@SuppressWarnings("deprecation")
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Tushar
customViewContainer = (FrameLayout) findViewById(R.id.customViewContainer);
//Tushar
//define button
btnrefresh = (ImageButton) findViewById(R.id.imageButton1);
btnrefresh.setOnClickListener(this);
btnrefresh.setVisibility(View.GONE);
//define textView
txtrefresh = (TextView)findViewById((R.id.textView1));
txtrefresh.setVisibility(View.GONE);
if(isConnected())
{
webView = (WebView) …Run Code Online (Sandbox Code Playgroud) YouTube视频无法在WebView中播放.
这是我的第一个应用程序,我想做一个webview.当我打开YouTube时,视频没有播放,正在加载但没有播放.正在加载所有时间.非常感谢你的帮助.
Java的:
public class MainActivity extends Activity {
private WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("http://www.google.com");
mWebView.setWebViewClient(new HelloWebViewClient());
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView webview, String url)
{
webview.loadUrl(url);
return true;
}}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())
{
mWebView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
} }
Run Code Online (Sandbox Code Playgroud)
XML:
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" …Run Code Online (Sandbox Code Playgroud) 在我的网络视图中,视频无法全屏显示。当我按下 YouTube 视频上的全屏按钮时,chrome 控制台显示以下错误。
Uncaught (in promise) TypeError: fullscreen error
Run Code Online (Sandbox Code Playgroud)
系统
Android 10
Chrome version: 83.0.4103.106
Run Code Online (Sandbox Code Playgroud)
应用程序配置
compileSdkVersion 28
defaultConfig {
minSdkVersion 22
targetSdkVersion 28
}
webviewSettings.setJavaScriptEnabled(true);
webviewSettings.setDomStorageEnabled(true);
webviewSettings.setSupportMultipleWindows(false);
webviewSettings.setJavaScriptCanOpenWindowsAutomatically(false);
Run Code Online (Sandbox Code Playgroud)
该错误与此错误Bug 945287相关,但它应该在我的版本中修复。在网络视图中全屏显示嵌入视频是否需要任何其他设置?
android ×13
webview ×9
video ×5
html5 ×4
html5-video ×3
youtube ×3
fullscreen ×1
html ×1
java ×1
javascript ×1
jquery ×1