2014-09-29 3 views
12

Meine Webseiten haben eingebettete Videodateien mit html5-Video-Tags.Das Video kann nicht in Android Web View angezeigt werden.

Ich habe einen eingebetteten Webserver (NanoHTTPD) ausgeführt, der meine Datei aus dem Dateisystem dient. Alles andere funktioniert, aber wenn ich auf Wiedergabe des HTML5-Videos klicke. Es gibt die folgenden Fehler und das Video

09-29 20:38:36.620: D/HTML5VideoInline(11532): HTML5VideoInline created 
09-29 20:38:36.625: V/MediaPlayer(11532): setVideoSurfaceTexture 
09-29 20:38:36.625: V/MediaPlayer-JNI(11532): reset 
09-29 20:38:36.625: V/MediaPlayer(11532): reset 
09-29 20:38:36.625: I/MediaPlayer(11532): path is null 
09-29 20:38:36.640: D/MediaPlayer(11532): setDataSource IOException happend : 
09-29 20:38:36.640: D/MediaPlayer(11532): java.io.FileNotFoundException: No content provider: http://10.207.114.115:8765/SLC/Book3_html/Book3/book/BO/demo.mp4 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:713) 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:617) 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:954) 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoView.prepareDataCommon(HTML5VideoView.java:326) 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoView.prepareDataAndDisplayMode(HTML5VideoView.java:363) 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoInline.prepareDataAndDisplayMode(HTML5VideoInline.java:72) 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoViewProxy$VideoPlayer.play(HTML5VideoViewProxy.java:289) 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.webkit.HTML5VideoViewProxy.handleMessage(HTML5VideoViewProxy.java:465) 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.os.Handler.dispatchMessage(Handler.java:99) 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.os.Looper.loop(Looper.java:137) 
09-29 20:38:36.640: D/MediaPlayer(11532): at android.app.ActivityThread.main(ActivityThread.java:5306) 
09-29 20:38:36.640: D/MediaPlayer(11532): at java.lang.reflect.Method.invokeNative(Native Method) 
09-29 20:38:36.640: D/MediaPlayer(11532): at java.lang.reflect.Method.invoke(Method.java:511) 
09-29 20:38:36.640: D/MediaPlayer(11532): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
09-29 20:38:36.640: D/MediaPlayer(11532): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
09-29 20:38:36.640: D/MediaPlayer(11532): at dalvik.system.NativeStart.main(Native Method) 
09-29 20:38:36.640: D/MediaPlayer(11532): Couldn't open file on client side, trying server side 

Der Media-Player zum Inhalt Resolver geht nicht gespielt wird, die nur Dateien von Content-Schema zu laden versucht. Meine URLs sind von HTTP-Schema.

Meine Webansicht ist schlicht und einfach.

WebSettings webViewSettings = webView.getSettings(); 
    webViewSettings.setJavaScriptEnabled(true); 
    //webViewSettings.setJavaScriptCanOpenWindowsAutomatically(false); 
    //webViewSettings.setSupportMultipleWindows(true); 
    webViewSettings.setPluginState(PluginState.ON); 
    //webViewSettings.setMediaPlaybackRequiresUserGesture(false); 
    webViewSettings.setAllowFileAccess(true); 
    webView.setSoundEffectsEnabled(true); 
    //webViewSettings.setSupportZoom(true); 
    //WebView.setWebContentsDebuggingEnabled(true); 

    webView.setWebViewClient(new CustomWebViewClient()); 
    webView.setWebChromeClient(mWebChromeClient); 

prost, Saurav

+1

https: // stackoverflow. com/a/16179544/6490462 – Ibrahim

Antwort

0

Sie müssen loadDataWithBaseURL verwenden.

sehen: https://stackoverflow.com/a/24592012/850347

SIE NICHT funktioniert:

mContentWebView.loadDataWithBaseURL(null, webViewContentString, 
     "text/html", "UTF-8", null); 

THIS STATT DO:

//veryVeryVery important for playing the videos! 
mContentWebView.loadDataWithBaseURL(theBaseUrl, webViewConentString, 
     "text/html", "UTF-8", null); 
0

Es scheint, Sie haben ein Problem Einstellung setDataSource(), stellen Sie sicher, Sie rufen

setDataSource(String path)