Воспроизведение видео с ютуба

Ответить
Аватара пользователя
andev
Сообщения: 219
Зарегистрирован: 13 янв 2012, 17:56

Воспроизведение видео с ютуба

Сообщение andev » 13 сен 2012, 20:44

Пытаюсь реализовать воспроизведение видео с ютуба.
Тестовая страница http://www.kitayka.net/search или любая другая с embed
Подскажите, как перехватить нажатие на BACK при играющем видео, что бы поведение было аналогичным стандартному браузеру со стандартным проигрывателем (видео должно прерываться и появляться опять WebView).

MainActivity.java

Код: Выделить всё

package com.example.ytvideoplayer;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebChromeClient.CustomViewCallback;
import android.widget.LinearLayout;

public class MainActivity extends Activity {

	WebView wv_view;

	MyWebChromeClient mMyWebChromeClient;

	CustomViewCallback mCustomViewCallback;
	LinearLayout mMainContentContainer;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		mMainContentContainer = (LinearLayout) findViewById(R.id.ll_mainContainer);

		wv_view = (WebView) findViewById(R.id.wv_view);

		wv_view.getSettings().setJavaScriptEnabled(true);
		wv_view.getSettings().setPluginsEnabled(true);

		// CookieSyncManager.createInstance(this);
		// CookieManager cookieManager = CookieManager.getInstance();
		// cookieManager.removeAllCookie();

		wv_view.clearCache(true);
		wv_view.setWebViewClient(new MyWebViewClient());

		mMyWebChromeClient = new MyWebChromeClient();

		wv_view.setWebChromeClient(mMyWebChromeClient);

		wv_view.loadUrl("http://www.kitayka.net/search");
	}

	private class MyWebViewClient extends WebViewClient {
		
		@Override
		public boolean shouldOverrideUrlLoading(WebView view, String url) {

			Log.i("tag_video", "shouldOverrideUrlLoading()" + url);

			return super.shouldOverrideUrlLoading(view, url);
		}
	}

	private class MyWebChromeClient extends WebChromeClient {

		private View mCustomView;

		@Override
		public void onShowCustomView(View view, CustomViewCallback callback) {

			Log.i("tag_video", "onShowCustomView()");

			if (mCustomView != null) {
				callback.onCustomViewHidden();
				
				Log.i("tag_video", "mCustomView != null");
				
			} else {
				mCustomView = view;
				mCustomViewCallback = callback;
				wv_view.setVisibility(View.GONE);
				LinearLayout.LayoutParams lllp = new LinearLayout.LayoutParams(
						LinearLayout.LayoutParams.MATCH_PARENT,
						LinearLayout.LayoutParams.MATCH_PARENT);
				mMainContentContainer.addView(view, lllp);
			}
		}

		@Override
		public void onHideCustomView() {

			Log.i("tag_video", "onHideCustomView()");

			if (mCustomView != null) {
				
				Log.i("tag_video", "mCustomView != null");
				
				mMainContentContainer.removeView(mCustomView);
				mCustomViewCallback.onCustomViewHidden();
				mCustomView = null;
				wv_view.setVisibility(View.VISIBLE);
			}
		}
	}

	@Override
	public void onBackPressed() {

		Log.i("tag_video", "onBackPressed");
		
		if (wv_view.canGoBack()) {
			wv_view.goBack();
		} else {
			super.onBackPressed();
		}
	}
}
activity_main.xml

Код: Выделить всё

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/ll_mainContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <WebView
        android:id="@+id/wv_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
В манифесте не забываем
<uses-permission android:name="android.permission.INTERNET" />

Ответить