Wie zu Spielen HTML5-video und YouTube-Videos in Android WebView?
Ich versuche zu spielen, html5-video und youtube-Videos in android webview, aber nicht anzeigen kann, video auf android-webview-Bildschirm. und spielen das video.
Habe ich folgenden code-snippet...
layout-xml-Datei benennen: test.xml enthält unter codestück:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:id="@+id/rltvLayoutTest"
android:layout_height="fill_parent">
<WebView android:id="@+id/webViewTest" android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
- und Activity-Klasse name: Test.java enthält code unten gegeben:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
WebView mWebView = (WebView)findViewById(R.id.webViewTest);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.setWebChromeClient(new chromeClient());
mWebView.setWebViewClient(new WebViewClient(){
});
mWebView.loadUrl("http://broken-links.com/tests/video/");
}
public class chromeClient extends WebChromeClient implements OnCompletionListener, OnErrorListener{
private WebView wv;
private VideoView mVideoView;
private LinearLayout mContentView;
private FrameLayout mCustomViewContainer;
private WebChromeClient.CustomViewCallback mCustomViewCallback;
FrameLayout.LayoutParams COVER_SCREEN_GRAVITY_CENTER = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT,
ViewGroup.LayoutParams.FILL_PARENT, Gravity.CENTER);
@Override
public void onShowCustomView(View view, CustomViewCallback callback) {
if (view instanceof FrameLayout) {
wv = (WebView)findViewById(R.id.webViewTest);
mCustomViewContainer = (FrameLayout) view;
mCustomViewCallback = callback;
mContentView = (LinearLayout)findViewById(R.id.rltvLayoutTest);
if (mCustomViewContainer.getFocusedChild() instanceof VideoView) {
mVideoView = (VideoView) mCustomViewContainer.getFocusedChild();
//frame.removeView(video);
mContentView.setVisibility(View.GONE);
mCustomViewContainer.setVisibility(View.VISIBLE);
setContentView(mCustomViewContainer);
mVideoView.setOnCompletionListener(this);
mVideoView.setOnErrorListener(this);
mVideoView.start();
}
}
}
public void onHideCustomView() {
if (mVideoView == null)
return;
//Hide the custom view.
mVideoView.setVisibility(View.GONE);
//Remove the custom view from its container.
mCustomViewContainer.removeView(mVideoView);
mVideoView = null;
mCustomViewContainer.setVisibility(View.GONE);
mCustomViewCallback.onCustomViewHidden();
//Show the content view.
mContentView.setVisibility(View.VISIBLE);
}
public void onCompletion(MediaPlayer mp) {
mp.stop();
mCustomViewContainer.setVisibility(View.GONE);
onHideCustomView();
setContentView(mContentView);
}
public boolean onError(MediaPlayer arg0, int arg1, int arg2) {
setContentView(mContentView);
return true;
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich verwendet html5webview um dieses problem zu lösen.Herunterladen und legen Sie es in Ihrem Projekt, dann können Sie code wie diesen.
Das video drehbar, setzen android:configChanges="orientation" - code in Ihre Tätigkeit
zum Beispiel (Androidmanifest.xml)
ab und setzen die onConfigurationChanged Methode.
haben Sie nicht Hinzugefügt mCustomViewContainer Ihrer Ansicht Hierarchie
wenn Sie es läuft auf dem tablet... fügen Sie hardwareaccelerated= " true in Ihrer manifest-Datei und es wird sicherlich funktionieren.. auch die sdk-version, die um 11
Es funktionierte für mich. Kann Ihnen helfen, spielen html-videos