Javascript 如何使用android在网络视图中播放视频?
我在sdcard中加载了一个本地html,在这个html中我使用了标记:Javascript 如何使用android在网络视图中播放视频?,javascript,android,html,android-widget,android-webview,Javascript,Android,Html,Android Widget,Android Webview,我在sdcard中加载了一个本地html,在这个html中我使用了标记: <video id="myvideo" controls width="120" height="60" poster="img/img01.jpg" src="video/01.mp4"></video> 然后我发现我没有加载这个html,当我禁用标记:,html工作正常,我在我的android avd(2.2)中测试了这个 这应该适用于您已经在使用的2.x版本。但该标签表示,当浏览器全屏显
<video id="myvideo" controls width="120" height="60" poster="img/img01.jpg" src="video/01.mp4"></video>
然后我发现我没有加载这个html,当我禁用标记:,html工作正常,我在我的android avd(2.2)中测试了这个 这应该适用于您已经在使用的2.x版本。但该标签表示,当浏览器全屏显示时,该标签将起作用 您的webview也可能支持它,但它需要全屏显示。 试试这个。 (不过我还没试过) 编辑:要使视图全屏显示,您可以尝试以下操作:
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
首先要注意编码。这里是一个为Android webkit编码视频的示例和一些指导原则 然后。。。当我不得不面对这个问题时,我不得不进行一些研究并找到一些有用的答案。基本上,您必须以本机浏览器的方式打开视频
public class InredisChromeClient extends WebChromeClient implements OnCompletionListener, OnErrorListener {
private InterfazWebInredis interfazWeb; // Use Your WebView instance instead
private VideoView mCustomVideoView;
private LinearLayout mContentView;
private FrameLayout mCustomViewContainer;
private WebChromeClient.CustomViewCallback mCustomViewCallback;
private LinearLayout mErrorConsoleContainer;
static final FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT, Gravity.CENTER);
public InredisChromeClient(InterfazWebInredis iwi) {
super();
this.interfazWeb = iwi;
}
public void onShowCustomView(View view, CustomViewCallback callback) {
// super.onShowCustomView(view, callback);
if (view instanceof FrameLayout) {
mCustomViewContainer = (FrameLayout) view;
mCustomViewCallback = callback;
mContentView = (LinearLayout) interfazWeb.findViewById(R.id.mainContainer);
if (mCustomViewContainer.getFocusedChild() instanceof VideoView) {
mCustomVideoView = (VideoView) mCustomViewContainer.getFocusedChild();
// frame.removeView(video);
mContentView.setVisibility(View.GONE);
mCustomViewContainer.setVisibility(View.VISIBLE);
interfazWeb.setContentView(mCustomViewContainer);
mCustomVideoView.setOnCompletionListener(this);
mCustomVideoView.setOnErrorListener(this);
mCustomVideoView.start();
}
}
}
public void onHideCustomView() {
if (mCustomVideoView == null)
return;
// Hide the custom view.
mCustomVideoView.setVisibility(View.GONE);
// Remove the custom view from its container.
mCustomViewContainer.removeView(mCustomVideoView);
mCustomVideoView = null;
mCustomViewContainer.setVisibility(View.GONE);
mCustomViewCallback.onCustomViewHidden();
// Show the content view.
mContentView.setVisibility(View.VISIBLE);
}
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
mCustomViewContainer.setVisibility(View.GONE);
onHideCustomView();
interfazWeb.setContentView(mContentView);
}
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
interfazWeb.setContentView(R.layout.main);
return true;
}
}
因此,这段代码在上一篇文章中得到了很多启发
好吧,这样做的行为是打开视频全屏。我不知道是否有可能在网页中自己的框架中播放视频。但是这个解决方案对我起了作用,我希望你也能起作用
问候谢谢!但是如何使浏览器全屏显示呢?现在我加载的html页面太大了,我 当我想查看所有页面时,必须使用滚动条来控制它,以及如何将加载的htnl页面自动调整到我的webview中,并使webview全屏显示?有人根据这个答案使其工作吗?这对我不起作用。顺便说一句,我在链接的文档中也找不到关于全屏的消息。它上面写着“全屏模式下的标签支持”,下面讨论了“浏览器”功能。如何在WebView对象上设置ContentView?我想我失踪了something@powerj1984默认情况下,当您单击视频链接时,WebView会尝试在新窗口中打开它,因此平台会为您执行此操作。我不知道他们是否改变了这种行为,这就是ir在FroYo中的工作方式。我知道这很旧,但我也没有真正得到setContentView调用。setContentView不是WebView的函数,也不是它的父函数。这是你自己做的吗?您能否提供该项目的完整来源?非常感谢。@FuegoFingers,字段
interfazWeb
是InterfazWebInredis
的一个实例,它扩展了活动
。我是android开发新手,我想在本地存储html(资产文件夹)上播放本地存储视频在android网页上..但当我点击html上的视频时,它不会播放..我看到了你的代码,但我不知道在哪里使用你的代码这将帮助你解决你的问题。但它仍然存在一些问题,这在链接中提到。