android webView 播放优酷、腾讯、爱奇艺,支持全屏

本文介绍如何使用 Android WebView 播放优酷、腾讯和爱奇艺等平台的视频,并实现全屏播放功能。文中提供了具体的代码示例,包括如何获取内嵌浏览器的播放地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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&amp;duration=71&amp;cid=7iwfarqoznznats&amp;tpid=5&amp;showend=1&amp;showcfg=1&amp;searchbar=1&amp;shownext=1&amp;list=2&amp;autoplay=1&amp;ptag=www_baidu_com%7Cindex.today.small_img1&amp;outhost=http%3A%2F%2Fv.qq.com%2Fcover%2F7%2F7iwfarqoznznats.html%3Fvid%3Dg0146xt6648&amp;refer=http%3A%2F%2Fv.qq.com%2F&amp;openbc=0&amp;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&amp;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();
  }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值