在 mediaplayer 中播放的 Android webview 视频

Posted

技术标签:

【中文标题】在 mediaplayer 中播放的 Android webview 视频【英文标题】:Android webview video to play in mediaplayer 【发布时间】:2014-03-19 08:43:20 【问题描述】:

我目前正在构建一个显示带有 html 标签的内容的应用程序。内容有一个 HTML5 视频标签,显示来自外部来源的视频。

通过使用 webview.loadDataWithBaseURL(),我加载了 html 页面。 webview 显示视频以及控件(播放、停止等)。我想要做的是当我点击视频时,它会触发 android 默认媒体播放器意图下载和播放视频源,而不是播放与 webview 内联的视频

通过什么方式来完成这个任务?

【问题讨论】:

您必须在线播放视频?还是下载到设备上? 流。我只需要覆盖视频标签中的播放按钮并将网址发布到android的默认媒体播放器。我该怎么做? 只需对 tat 视频标签的点击事件做一个意图到 android 媒体播放器 【参考方案1】:

这样做

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("http://your_video_link), "video/mp4");

添加权限 android.permission.WRITE_EXTERNAL_STORAGE

【讨论】:

我知道如何打开媒体播放器,但我不能做的是如何检测视频标签上的点击事件然后打开意图。我使用 WebView.HitTestResult 来获取标签和 url,但是当我单击 【参考方案2】:

使用WebViewClient shouldOverrideUrlLoading 检测点击

webView.setWebViewClient(new MyWebClient());

private class MyWebClient extends WebViewClient 

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) 

【讨论】:

这个问题是媒体播放器会在页面加载后开始查看 url,所以我猜 shouldOverrideUrlLoading() 会立即被调用。

以上是关于在 mediaplayer 中播放的 Android webview 视频的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Nexus 5 中同时播放两个 MediaPlayer

在 Android 中是不是可以录制 MediaPlayer 播放的内容?

使用MediaPlayer和SurfaceView播放视频

在 Android 中使用 MediaPlayer 播放音频文件

如何在实际完全加载视频之前开始在 MediaPlayer 中播放视频

如何一键暂停/播放多个 MediaPlayer 对象?