android - 将视频从资源加载到 HTML5 webview - Android

标签 android video html5-video android-assets

如标题所示,我需要将资源文件夹中的视频(.mp4)加载到 WebView 中。 我尝试了一些方法:

//第一

String webpage = "<!doctype html><head><meta charset='utf-8'></head><body><video id='video' controls='controls' autoplay='autoplay' height=" + m.getHeight() + " width=" + m.getWidth() + "><source src='file:///android_asset/1003/landscape_1003_1_m864.mp4' /></video></body></html>";

wv.loadData(webpage, "text/html", "utf-8");

//第二个

使用 loadUrl() 方法加载相同的网页

wv.loadUrl(webpage);

//第三

使用另一种方法加载完全相同的网页

wv.loadDataWithBaseURL("file:///android_asset/", webpage,"text/html", "utf-8", null);

我尝试将第一个参数更改为 null,还有网页,...

一切都必须动态添加(webview 本身、视频的 url、宽度、高度……),因此不能选择创建 XML 文件。

我在互联网上找到的很多解决方案是将视频移动到 Raw 文件夹或 SD 卡,但这不是一个选项(业务决策)。

如果有人能帮助我,那就太好了。

附注如果您可以帮助我完成完全相同的事情,但在视频 View 中显示视频,并使用 html5 视频元素(播放、暂停、搜索栏、全屏)等所有控件,请随意!

最佳答案

我也遇到了同样的问题。不幸的是我没有找到解决方案。除此之外,我只是做这样的事情:

  • 在网页 View 中打开网站
  • 当用户打开以 .mp4 结尾的链接时,我会使用视频播放器打开新 Activity 。
  • 传递网址
  • 打开视频

    public void onCreate(Bundle savedInstanceState) 
    {
    super.onCreate(savedInstanceState);
    
    parent = (TabLayout)this.getParent();
            setContentView(R.layout.XXXXXXXXXX);
            l = (ProgressBar)findViewById(R.id.webL);
            Resources res = getResources();
            mWebView = (WebView) findViewById(R.id.webview);
            mWebView.getSettings().setJavaScriptEnabled(true);                
            mWebView.getSettings().setPluginsEnabled(true);
            mWebView.getSettings().setSupportZoom(true);
            mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
            mWebView.loadUrl(res.getString(R.string.XXXXXX));   
            mWebView.getSettings().setAllowFileAccess(true);
            mWebView.setWebViewClient(new WebViewClient() 
            {
                @Override
                public void onPageFinished(WebView view, String url)  
                {
                    super.onPageFinished(view, url);
                    l.setVisibility(View.INVISIBLE);                        
                }
    
                @Override
                public void onPageStarted (WebView view, String url, Bitmap favicon)
                {
                    super.onPageStarted(view, url, favicon);
                    l.setVisibility(View.VISIBLE);
                }
    
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) 
                {
                    if (url.endsWith(".mp4") )
                    {                           
                        data.url = url;
                        Intent intent = new Intent(getApplicationContext(), VideoPlayer.class);
                        startActivity(intent);
                        return true;
                    } 
                    else 
                    {
                        return super.shouldOverrideUrlLoading(view, url);
                    }
                }
    
            });
    
    }
    

..还有我的视频播放器:

public class VideoPlayer extends Activity
{
private VideoView mVideoView;

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);

    this.setContentView(R.layout.video);
    mVideoView = (VideoView) findViewById(R.id.surface_video); 

    mVideoView.setVideoURI(Uri.parse(data.url));
    mVideoView.setMediaController(new MediaController(this));
    mVideoView.requestFocus();
    mVideoView.start();
}

关于android - 将视频从资源加载到 HTML5 webview - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9514200/

相关文章:

android - 当我的应用程序最小化时,在 android 中使用 Youtube API 播放音乐视频中的音频

javascript - 在 HTML 中裁剪视频?

ruby-on-rails - 使用 rails、nginx 和 send_file 在 Chrome 中流式传输 mp4

android - 退款到 Android 上的应用内购买

android - 如何在Android SDK中指定查询MediaStore.Audio.Media?

当使用 OpenCV CameraBridgeViewBase 时,Android 总是在随机时间间隔后重新启动

java - 可选的已安装软件包Android

video - Joomla YouTube下载按钮或Dropbox集成

iOS 不在 UIWebView iframe 中显示/播放视频

html5-video - 使用HTML5视频时,我是否需要WebM和ogv格式?