【问题标题】:Android HTML5 video plays but not visibleAndroid HTML5 视频播放但不可见
【发布时间】:2016-04-21 22:09:44
【问题描述】:

我进行了大量研究,试图找出 html5 视频无法在我的应用中正确播放的原因。更具体地说,页面加载正常,您可以看到视频播放器的初始控件,但是当您在此处点击播放时,您会听到视频中的声音,但您什么也看不到。

我正在使用 webview 来显示它并使用几个在线链接进行测试,例如:

这是我的 webview 代码:

String _location = "http://broken-links.com/tests/video/";
WebView wv = (WebView) findViewById(R.id.dsWebView);
wv.setWebChromeClient(new WebChromeClient()); //chromeClient());        
wv.setWebViewClient(new HelloWebViewClient());
WebSettings webSettings = wv.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setSupportZoom(true);   
webSettings.setUseWideViewPort(true);   
webSettings.setPluginsEnabled(true);
webSettings.setPluginState(PluginState.ON);
webSettings.setDomStorageEnabled(true);
webSettings.setAllowFileAccess(true);
wv.setInitialScale(50); 
wv.loadUrl(_location);


private class HelloWebViewClient extends WebViewClient
{ 
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    { 
        view.loadUrl(url); 
        return true;//false; 
    } 
} 

我还更改了我的项目,使其适用于 android 4.0 及更高版本,并在我的清单文件中设置 android:hardwareAccelerated="true"。

还要补充一点,我确实在我的 htc one x 和 chrome beta 浏览器上的默认浏览器中测试了这两个链接,并且它在两者上都能完美播放。这只是我的 webview 不起作用:(。

我基本上是想弄清楚我缺少什么才能让视频在我的网络视图中正确播放。

提前感谢您的帮助,

【问题讨论】:

  • 您确定视频没有使用某种无法识别的编解码器进行编码吗?
  • 你运行的是什么操作系统?设备上是否安装了 Flash?
  • Android 4.0.3 并且安装了 flash 11。我正在使用 AT&T 的 HTC one x 进行测试。
  • 但这些链接在手机的默认浏览器中有效。这只是给出问题的webview :(
  • 还有其他想法吗? :(我还是卡住了

标签: android html video webview inline


【解决方案1】:

试试这个

wv.setLayerType(View.LAYER_TYPE_HARDWARE, null);

【讨论】:

    【解决方案2】:

    终于!我想出了我的问题。这是我清单文件中的意图过滤器。如果我发布它,可能会有人能够更快地发现问题,对此感到抱歉。

    <manifest>
        <uses-sdk android:minSdkVersion="7" 
            android:targetSdkVersion="14" />
      <supports-screens android:resizeable="true"
                  android:smallScreens="true"
                  android:normalScreens="true"
                  android:largeScreens="true"
                  android:anyDensity="true"/> 
    
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"  />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />          
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    
    
    <application android:icon="@drawable/icon"
                 android:label="@string/app_name"
                 android:hardwareAccelerated="true">
        <activity android:name=".Main"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <intent-filter
                android:icon="@drawable/icon"
                android:label="Test File"
                android:priority="1">              
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="http" android:host="*"
                    android:pathPattern=".*\\.test"/>             
            </intent-filter>
            <intent-filter
                android:icon="@drawable/icon"
                android:label="Test File"
                android:priority="1">              
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="https" android:host="*"
                    android:pathPattern=".*\\.test"/>
            </intent-filter>            
            <intent-filter
                android:icon="@drawable/icon"
                android:label="Test File"
                android:priority="1">               
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="content" android:host="*"
                    android:pathPattern=".*\\.test"/>
            </intent-filter>            
            <intent-filter
                android:icon="@drawable/icon"
                android:label="Test File"
                android:priority="1">            
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="file" android:host="*"
                    android:pathPattern=".*\\.test"/>
            </intent-filter>                              
        </activity>
        <activity android:name="myWebView"
                  android:configChanges="keyboardHidden|orientation"         
        ></activity>
    </application>
    

    我必须删除我添加的意图过滤器,以便从任何带有“.test”的文件中启动我的应用程序。 基本上去掉这部分就开始工作了:

            <intent-filter
                android:icon="@drawable/icon"
                android:label="Test File"
                android:priority="1">              
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="http" android:host="*"
                    android:pathPattern=".*\\.test"/>             
            </intent-filter>
            <intent-filter
                android:icon="@drawable/icon"
                android:label="Test File"
                android:priority="1">              
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="https" android:host="*"
                    android:pathPattern=".*\\.test"/>
            </intent-filter>            
            <intent-filter
                android:icon="@drawable/icon"
                android:label="Test File"
                android:priority="1">               
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="content" android:host="*"
                    android:pathPattern=".*\\.test"/>
            </intent-filter>            
            <intent-filter
                android:icon="@drawable/icon"
                android:label="Test File"
                android:priority="1">            
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data android:scheme="file" android:host="*"
                    android:pathPattern=".*\\.test"/>
            </intent-filter> 
    

    现在我的下一个问题是如何从 .t​​est 文件启动我的应用程序,如果它导致我的 html5 无法工作。 (我想我可以删除 http 过滤器,但我想点击下载并打开我的 .test 文件的网页上的链接。

    【讨论】:

    • 你有没有想过为什么删除意图过滤器可以解决问题?我不明白为什么这会相关(我正在处理类似的问题,只是我没有像您那样的任何意图过滤器)。
    猜你喜欢
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 2013-11-04
    • 2017-11-21
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多