相关疑难解决方法(0)

在android webview中全屏播放HTML5视频

好吧,我已经好几天了,如何在android WebView上以全屏模式显示HTML5视频.

我设法在我的网页浏览中播放HTML5视频.在全屏模式下显示视频时出现问题.

正如我所知,android有两种处理<video>标签的方法:

  1. 在Android版本<= 2.3.3上,onShowCustomView方法被触发,我可以拥有VideoView实例,并在视频完成时设置监听器,设置控制器等.到目前为止一切顺利.

  2. 在ICS(可能是3.0及更高版本)上,看起来<video>以不同的方式处理.播放HTML5视频时,onShowCustomView未在正常模式下调用 - 看起来WebView内部有一个内部业务播放视频,并显示<video>标签中定义的所有控件 - I不能以任何方式访问它.实际上,如果视频是在正常模式下播放的,那么这是正常的,因为控件在那里并且正在工作.

这导致了一个大问题:当以全屏模式显示视频时,正在调用onShowCustomView - 但在ICS上,"view"参数不是VideoView的实例.

我设法发现该实例是VideoSurfaceView,一个HTML5VideoFullScreen类的私有内部类.我们访问这个内部类的唯一方法是通过反射.

在查看了这个类的GrepCode之后,我了解到与VideoView不同,HTML5VideoFullScreen $ VideoSurfaceView不包含我可以监听其事件或访问其控件的MediaPlayer实例.我唯一能做的就是把这个VideoSurfaceView原样放在一个全屏布局中而不用控制它.

底线 - 当以全屏显示视频时,我不知道视频何时结束,其控件未显示 - 这非常令人伤心.我无法获得关闭全屏的触发器.

我尝试了几个不成功的解决方法:

  1. 反思:我试图从内部类VideoSurfaceView到达HTML5VideoFullScreen实例,该实例包含一个MediaPlayer成员.我没有设法得到它,我不确定这是否可行(ViewSurfaceView不保存其所有者的实例).

  2. 通过Javascript(例如onended)注册视频事件,并通过JavascriptInterface处理我在JAVA中需要的东西:我发现这个解决方案不可靠,因为在这样做时我遇到了另一个问题:<video>标签可以嵌套在一个.iframe源不是我的,我无法获取其内容(getElementById或getElementsByTagName [i]为空) - 这意味着,我无法访问iframe中的<video>元素.

我仍在寻找解决方案,关于这个问题的报道很少.有人设法解决它吗?非常感谢帮助!

VideoView类:这里(有MediaPlayer)

HTML5VideoFullScreen $ VideoSurfaceView类:这里(没有MediaPlayer)

android android-webview html5-video

92
推荐指数
3
解决办法
13万
查看次数

通过Android WebView在YouTube HTML5视频中寻求前进

编辑 Nevermind,YouTube发布了原生Android API(https://developers.google.com/youtube/android/player/)

我有一个应用程序,通过WebView显示HTML5视频.此视频被迫通过YouTube服务获得HTML5(http://www.youtube.com/embed/3FFyT039tJ0?autoplay=1&rel=0&showinfo=0&html5=1&start=90&end=176 )

正如您在URL中看到的,参数"start"显示视频必须开始播放的秒数.我一直在使用该方法onShowCustomViewWebChromeClient获得VideoView通过的WebView创建的对象,因为看到这里.

当我有参考时VideoView,我可以使用该方法seekTo()来实现我的目标.直到这里一切都很好,但仅适用于低于4.x的Android版本.

正如你们许多人知道,方法onShowCustomViewWebViewChromeClient,从4.x和前进,当用户点击"全屏"模式只调用,但在视频开始时不打(如何使用是4.x版之前).

所以,重点是我不能向前寻求90秒,因为我无法获得对VideoView的引用,我找不到任何解决方法.

youtube video html5 android

30
推荐指数
1
解决办法
1828
查看次数

带有嵌入式YouTube视频的Android WebView,全屏按钮冻结视频

我有一个Android webview加载一个wordpress博客.一些博客文章包含youtube视频,我希望用户可以根据需要全屏显示.问题是HTML5全屏按钮在单击时不执行任何操作但冻结视图.有任何想法吗?

youtube html5 android webview

29
推荐指数
1
解决办法
3万
查看次数

Android嵌入式HTML5视频

我的文件系统中有一个嵌入式html文件,如果我拖放文件,它可以正常工作

资产/ index.html的

从这里测试了HTML5视频播放.工作良好.

现在,如果我想显示一个带有HTML5视频的嵌入式页面[在浏览器上工作]作为嵌入式文件,只需更改HTML5 android webView播放器的示例代码并拖放该项目的资产中的index.html即可不起作用,应用程序崩溃与此错误:

抱歉,app*意外停止了......

所以我只是改变

mWebView.loadUrl("http://freebsd.csie.nctu.edu.tw/~freedom/html5/");
Run Code Online (Sandbox Code Playgroud)

mWebView.loadUrl("file:///android_asset/index.html");
Run Code Online (Sandbox Code Playgroud)

它不起作用.

我缺少什么,是否有嵌入HTML5视频的基本示例?

video html5 android android-webview

20
推荐指数
1
解决办法
1716
查看次数

Android Webview应用程序不会让视频播放器全屏显示

嗨,我为我的视频网站创建了一个webview应用程序.该网站的设计是为移动用户加载的混合设备.只有与移动设备兼容的视频才会加载到混合动力车上.球员来自Vk,dailymotion,youtube,quicktime.这些视频只能在sdk 11及更高版本上播放,但是当我点击播放器按钮进入全屏时,它只会停止播放视频,而不会启动进入全屏模式.我尽可能多地包含代码,希望有人可以帮助我.我没有取得任何进展,我用Google搜索了它.任何帮助将不胜感激.

(Webviewactivity.java)

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().requestFeature(Window.FEATURE_PROGRESS);
    setContentView(R.layout.main);

    parentView = (RelativeLayout) findViewById(R.id.parent_rl);

    webviewProgress = (ProgressBar) findViewById(R.id.webview_progress);

    webview = (WebView) findViewById(R.id.webview);
    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setBuiltInZoomControls(true);
    webview.getSettings().setAllowFileAccess(true);
    webview.setWebViewClient(new MyWebViewClient());
    webview.getSettings().setPluginState(WebSettings.PluginState.ON);
    webview.loadUrl(URL);
    webviewProgress.setProgress(0);

    webview.setWebChromeClient(new MyWebChromeClient());
    webview.setDownloadListener(new DownloadListener() {
        public void onDownloadStart(String url, String userAgent,
                String contentDisposition, String mimetype,
                long contentLength) {
            mProgressDialog = new ProgressDialog(WebViewActivity.this);
            mProgressDialog.setMessage("Downloading...");
            mProgressDialog.setIndeterminate(false);
            mProgressDialog.setMax(100);
            mProgressDialog
                    .setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            DownloadFile downloadFile = new DownloadFile();
            downloadFile.execute(url);
        }
    });

    initSlider();

    initAdmob();
}

/**
 * When when file was chosen
 */
@Override
protected void …
Run Code Online (Sandbox Code Playgroud)

eclipse android webview video-player

20
推荐指数
1
解决办法
4万
查看次数

为什么Android WebView没有加载youtube HTML5 iframe视频?

我尝试了以下方法:

    WebView wv = (WebView) findViewById(R.id.webView1);
    String playVideo= "<html><body><iframe width='200' height='143' src='http://www.youtube.com/embed/JW5meKfy3fY' frameborder='0' allowfullscreen></iframe></body></html>";
    wv.getSettings().setPluginsEnabled(true);
    wv.getSettings().setAllowFileAccess(true);
    wv.getSettings().setPluginState(PluginState.ON);
    wv.getSettings().setBuiltInZoomControls(true);
    wv.getSettings().setJavaScriptEnabled(true);
    wv.loadData(playVideo, "text/html", "utf-8");
Run Code Online (Sandbox Code Playgroud)

我只看到缩略图然后当我点击它时,框架变成黑色并且不加载视频.我的目标是API 15,我有互联网许可.我如何在Android webview中运行html5 youtube iframe视频?

youtube android webview

15
推荐指数
1
解决办法
9758
查看次数

如何在webview中禁用与html5视频的交互或正确捕获其异常?

我有webview应用程序,我使用ACRA.我收到崩溃报告从用户因与互动的错误HTML5Video.

错误1:

"java.lang.NullPointerException
    at android.webkit.HTML5VideoViewProxy$VideoPlayer.exitFullScreenVideo(HTML5VideoViewProxy.java:180)
    at android.webkit.HTML5VideoViewProxy.exitFullScreenVideo(HTML5VideoViewProxy.java:770)
    at android.webkit.WebViewClassic$PrivateHandler.handleMessage(WebViewClassic.java:7422)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5039)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    at dalvik.system.NativeStart.main(Native Method)"
Run Code Online (Sandbox Code Playgroud)

错误2:

"java.lang.NullPointerException
    at android.webkit.HTML5VideoFullscreen.switchProgressView(HTML5VideoFullscreen.java:455)
    at android.webkit.HTML5VideoView.enterFullscreenVideoState(HTML5VideoView.java:546)
    at android.webkit.HTML5VideoViewProxy$VideoPlayer.enterFullscreenVideo(HTML5VideoViewProxy.java:182)
    at android.webkit.HTML5VideoViewProxy.handleMessage(HTML5VideoViewProxy.java:479)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:155)
    at android.app.ActivityThread.main(ActivityThread.java:5485)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)
    at dalvik.system.NativeStart.main(Native Method)"
Run Code Online (Sandbox Code Playgroud)

如果需要,这是我的DropBox日志:

错误1:http://pastebin.com/w8G1UJvG

似乎很有趣:

11-14 22:19:29.912 E/libEGL  (14744): call to OpenGL ES API with no current context …
Run Code Online (Sandbox Code Playgroud)

crash android nullpointerexception android-webview html5-video

10
推荐指数
1
解决办法
3607
查看次数

如何在WebView中内联播放html5视频?

我需要在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)

video html5 android webview

9
推荐指数
1
解决办法
9150
查看次数

如何在Android 4.0中的HTML5VFullScreen $ SurfaceVideoView中获取HTML5视频URI?

我想在用户点击视频控制栏中的全屏按钮时获取HTML5视频URI.根据,在Android 4.0的HTML5视频的看法是一个SurfaceView,而不是一个VideoView.

有人能告诉我如何在SurfaceVideoView中获取URI吗?这是我的代码.非常感谢.

webView.setWebChromeClient(new WebChromeClient(){
  @Override
  public void onShowCustomView(View view, CustomViewCallback callback) {
    super.onShowCustomView(view, callback);
    if (view instanceof FrameLayout){
      final FrameLayout frame = (FrameLayout) view;
      if (frame.getFocusedChild() instanceof SurfaceView){
        SurfaceView video= (SurfaceView) frame.getFocusedChild();
      }
    }
  });
Run Code Online (Sandbox Code Playgroud)

video html5 android uri surfaceview

8
推荐指数
1
解决办法
2270
查看次数

HTML5视频删除叠加播放图标

每次视频开始在Android WebView中播放时,如何删除视频中心可见的叠加播放图标(三角形)一秒左右?

提前致谢!

android android-webview html5-video

8
推荐指数
2
解决办法
3202
查看次数