4

アプリで html5 ビデオが正しく再生されない理由を突き止めるために、多くの調査を行いました。より具体的には、ページが正常に読み込まれます。ビデオ プレーヤーの初期コントロールが表示されますが、ここで再生を押すと、ビデオのサウンドが再生されますが、何も表示されません。

私はそれを表示するためにWebビューを使用しており、次のようなテストのためにいくつかのオンラインリンクを使用しています:

ここに私のウェブビューコードがあります:

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 ベータ ブラウザーの両方で両方のリンクをテストしたところ、両方で完全に再生されました。機能しないのは私のWebビューだけです:(。

私は基本的に、自分の webview 内でビデオを正しく再生するために欠けているものを見つけようとしています。

事前にご協力いただきありがとうございます。

4

2 に答える 2

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> 

次の問題は、html5 が動作しない原因となっている場合、.test ファイルからアプリを起動する方法です。(http フィルターを削除できると思いますが、.test ファイルをダウンロードして開く Web ページのリンクをクリックしたいと思います。

于 2012-07-09T14:34:52.403 に答える