android webView 播放优酷、腾讯、爱奇艺,支持全屏
YoukuWebViewActivity
1、优酷在webView中播放的主要动作,取到正确的优酷播放地址.
这里需要拿到embed 内嵌浏览器的播放地址,具体的地址如下格式
private
String s =
"<html><head><meta charset=\"utf-8\" /><title>swf</title></head><body bgcolor=\"#000000\">"
+
"<embed src=\"http://player.youku.com/player.php/sid/XMzcyMzY2NTY4/v.swf\" "
+
" width=\"100%\" height=\"100%\" align=\"middle\" allowScriptAccess=\"always\""
+
" allowFullScreen=\"true\" wmode=\"transparent\" "
+
"type=\"application/x-shockwave-flash\"> </embed></body></html>"
;
|
你可以通过优酷视频的分享功能来获得这个地址
2、android webview播放腾讯视频的地址, 视频界面 通过审查元素,找到embed 地址
private
String s1 =
"<html><head><meta charset=\"utf-8\" /><title>swf</title></head><body bgcolor=\"#000000\">"
+
"\"<embed wmode=\"direct\" flashvars=\"vid=g0146xt6648&duration=71&cid=7iwfarqoznznats&tpid=5&showend=1&showcfg=1&searchbar=1&shownext=1&list=2&autoplay=1&ptag=www_baidu_com%7Cindex.today.small_img1&outhost=http%3A%2F%2Fv.qq.com%2Fcover%2F7%2F7iwfarqoznznats.html%3Fvid%3Dg0146xt6648&refer=http%3A%2F%2Fv.qq.com%2F&openbc=0&title=%E7%BE%8A%E5%B9%B4%E6%98%A5%E6%99%9A%E9%A6%96%E5%9C%BA%E5%A4%A7%E8%81%94%E6%8E%92%E7%BE%A4%E6%98%9F%E4%BA%91%E9%9B%86%20%E4%B8%BB%E6%8C%81%E4%BA%BA%E9%9B%86%E4%BD%93%E4%BA%AE%E7%9B%B8\" src=\"http://imgcache.qq.com/tencentvideo_v1/player/TencentPlayer.swf?max_age=86400&v=20141126\" quality=\"high\" name=\"tenvideo_flash_player_1423321083198\" id=\"tenvideo_flash_player_1423321083198\" bgcolor=\"#000000\" width=\"100%\" height=\"100%\" align=\"middle\" allowscriptaccess=\"always\" allowfullscreen=\"true\" type=\"application/x-shockwave-flash\" pluginspage=\"http://get.adobe.com/cn/flashplayer/\"> </embed></body></html>"
;
|
详细的webView对应的activity如下
package
com.itmmd.activity.content.impl.activity;
import
com.itmmd.activity.R;
import
android.app.Activity;
import
android.os.Bundle;
import
android.view.View;
import
android.webkit.WebChromeClient;
import
android.webkit.WebSettings;
import
android.webkit.WebSettings.PluginState;
import
android.webkit.WebView;
import
android.webkit.WebViewClient;
import
android.widget.FrameLayout;
public
class
YoukuWebViewActivity
extends
Activity {
private
FrameLayout mFullscreenContainer;
private
FrameLayout mContentView;
private
View mCustomView =
null
;
private
WebView mWebView;
private
String s =
"<html><head><meta charset=\"utf-8\" /><title>swf</title></head><body bgcolor=\"#000000\">"
+
"<embed src=\"http://player.youku.com/player.php/sid/XMzcyMzY2NTY4/v.swf\" "
+
" width=\"100%\" height=\"100%\" align=\"middle\" allowScriptAccess=\"always\""
+
" allowFullScreen=\"true\" wmode=\"transparent\" "
+
"type=\"application/x-shockwave-flash\"> </embed></body></html>"
;
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.act_flashplay);
initViews();
initWebView();
if
(getPhoneAndroidSDK() >=
14
) {
// 4.0 需打开硬件加速
getWindow().setFlags(
0x1000000
,
0x1000000
);
}
mWebView.loadData(s,
"text/html; charset=UTF-8"
,
null
);
// mWebView.loadUrl("file:///android_asset/1234.html");
}
private
void
initViews() {
mFullscreenContainer = (FrameLayout) findViewById(R.id.fullscreen_custom_content);
mContentView = (FrameLayout) findViewById(R.id.main_content);
mWebView = (WebView) findViewById(R.id.webview_player);
}
private
void
initWebView() {
WebSettings settings = mWebView.getSettings();
settings.setJavaScriptEnabled(
true
);
settings.setJavaScriptCanOpenWindowsAutomatically(
true
);
settings.setPluginState(PluginState.ON);
// settings.setPluginsEnabled(true);
settings.setAllowFileAccess(
true
);
settings.setLoadWithOverviewMode(
true
);
mWebView.setWebChromeClient(
new
MyWebChromeClient());
mWebView.setWebViewClient(
new
MyWebViewClient());
}
class
MyWebChromeClient
extends
WebChromeClient {
private
CustomViewCallback mCustomViewCallback;
private
int
mOriginalOrientation =
1
;
@Override
public
void
onShowCustomView(View view, CustomViewCallback callback) {
onShowCustomView(view, mOriginalOrientation, callback);
super
.onShowCustomView(view, callback);
}
public
void
onShowCustomView(View view,
int
requestedOrientation,
WebChromeClient.CustomViewCallback callback) {
if
(mCustomView !=
null
) {
callback.onCustomViewHidden();
return
;
}
if
(getPhoneAndroidSDK() >=
14
) {
mFullscreenContainer.addView(view);
mCustomView = view;
mCustomViewCallback = callback;
mOriginalOrientation = getRequestedOrientation();
mContentView.setVisibility(View.INVISIBLE);
mFullscreenContainer.setVisibility(View.VISIBLE);
mFullscreenContainer.bringToFront();
setRequestedOrientation(mOriginalOrientation);
}
}
public
void
onHideCustomView() {
mContentView.setVisibility(View.VISIBLE);
if
(mCustomView ==
null
) {
return
;
}
mCustomView.setVisibility(View.GONE);
mFullscreenContainer.removeView(mCustomView);
mCustomView =
null
;
mFullscreenContainer.setVisibility(View.GONE);
try
{
mCustomViewCallback.onCustomViewHidden();
}
catch
(Exception e) {
}
setRequestedOrientation(mOriginalOrientation);
}
}
class
MyWebViewClient
extends
WebViewClient {
@Override
public
boolean
shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return
super
.shouldOverrideUrlLoading(view, url);
}
}
public
static
int
getPhoneAndroidSDK() {
int
version =
0
;
try
{
version = Integer.valueOf(android.os.Build.VERSION.SDK);
}
catch
(NumberFormatException e) {
e.printStackTrace();
}
return
version;
}
@Override
public
void
onPause() {
// 继承自Activity
super
.onPause();
mWebView.onPause();
}
@Override
public
void
onResume() {
// 继承自Activity
super
.onResume();
mWebView.onResume();
}
}
|