4

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

我正在使用 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 中正确播放。

感谢您提前提供任何帮助,

4

2 回答 2

2

试试这个

wv.setLayerType(View.LAYER_TYPE_HARDWARE, null);
于 2016-04-21T14:09:44.773 回答
1

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

<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 文件的网页上的链接。

于 2012-07-09T14:34:52.403 回答