Android HTML5视频播放但不可见

时间:2012-07-03 22:19:38

标签: android html5 video webview inline

我做了很多研究,试图找出为什么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不起作用:(。

我基本上是想弄清楚我在网络视图中正确播放视频所缺少的内容。

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

2 个答案:

答案 0 :(得分:2)

尝试这个

wv.setLayerType(View.LAYER_TYPE_HARDWARE, null);

答案 1 :(得分: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过滤器。 基本上删除这部分它开始工作:

        <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> 

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