播放时Android Webview黑屏 [英] Android webview black screen while playing
问题描述
我正在开发一个使用 WebView 加载外部视频(.mp4)的应用,但是该页面仅播放音频,而视频仅是黑色".我已经搜索了很多,并做了所有可能的尝试来尝试解决此问题,但是我没有成功.你能帮我吗?
I'm developing an app that uses WebView to load external video (.mp4), but the page plays only audio, and the video is only "black". I've searched so much and did all possible things to try solve this problem but I failt. Can you help me?
MainActivity.java
-- REMOVED --
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="topflix.topflix">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/rounded"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:hardwareAccelerated="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="topflix.topflix.MainActivity">
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/wv"
/>
</android.support.constraint.ConstraintLayout>
activity_main.xml的打印>单击此处
Print of activity_main.xml > click here
视频网址: http://media-br-am.crackle .com/1/3/v6/11zlf_480p.mp4
测试网站:ntcdn.stream/prop/httpdelivery/modal
我已经做了:
Video URL: http://media-br-am.crackle.com/1/3/v6/11zlf_480p.mp4
Website for tests: ntcdn.stream/prop/httpdelivery/modal
What I already did:
- 设置hardwareAccelerated = true
- 设置wv.setWebChromeClient(new WebChromeClient());
并且视频屏幕持续显示为黑色,仅运行音频.我该怎么办?
- Set hardwareAccelerated=true
- Set wv.setWebChromeClient(new WebChromeClient());
and the video screen persists in black, running only audio. What should I do??
推荐答案
下面的代码对我来说可以在webview中加载视频:
The below code is working for me to load video in webview :
webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
if (Build.VERSION.SDK_INT >= 21) {
webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
CookieManager.getInstance().setAcceptThirdPartyCookies(webView, true);
}
if (android.os.Build.VERSION.SDK_INT < 16) {
webView.setBackgroundColor(0x00000000);
} else {
webView.setBackgroundColor(Color.argb(1, 0, 0, 0));
}
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
view.loadUrl(request.getUrl().toString());
}
return super.shouldOverrideUrlLoading(view, request);
}
@Override
public void onPageStarted(WebView webview, String url, Bitmap favicon) {
super.onPageStarted(webview, url, favicon);
webview.setVisibility(View.INVISIBLE);
}
@Override
public void onPageFinished(WebView webview, String url) {
webview.setVisibility(View.VISIBLE);
super.onPageFinished(webview, url);
}
});
webView.setWebChromeClient(new WebChromeClient());
webView.getSettings().setUserAgentString("Mozilla/5.0 (Linux; U; Android 2.0; en-us; Droid Build/ESD20) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17");
webView.loadUrl("http://media-br-am.crackle.com/1/3/v6/11zlf_480p.mp4");
编辑:如果您的视频在iframe中->
EDIT : if your video is in iframe -->
webView.loadDataWithBaseURL(null, iframe, "text/html; charset=utf-8", "utf-8", null);
请参阅我所附的屏幕截图:
see the screenshot i attached :
这篇关于播放时Android Webview黑屏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!