项目中有个需求,播放爱奇艺的视频,百度了一通,可能是搜索词有问题,没找到解决方法,后来无意中发现微信可以播放,就想到是否可以使用微信的x5内核,一试发现可以实现。想要实现的效果如下,点击全屏后全屏播放。


首先,使用原生WebView播放爱奇艺的视频,爱奇艺的视频url 如下:

http://dispatcher.video.iqiyi.com/common/shareplayer.html?rel=0&autoplay=1&vid=96f0abef35b4b3a32c6e86738c795868&tvId=959656600&coop=coop_244_af&cid=&aid=223135601&bd=1

直接加载无法播放,而且我们需要控制播放。自动播放,还有全屏播放。

直接接入TBS内核。

TBS内核官网

1.下载TBS X5 SDK

下载你需要的版本,我使用的完整版本。

找到SDK 中的jar文件,添加到项目中的libs目录下,右键执行Add as Library

2.找到jniLibs下的.so文件,添加到自己的项目

刚才下载的SDK 中,有一个SDK接入示例-Android StudioDemo有我们要的.so文件

jniLibs整个copy到项目对应位置。

在项目的build.gradle defaultConfig {}中配置

    defaultConfig {applicationId "com.aoben.playvideodemo"minSdkVersion 19targetSdkVersion 25versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"ndk {abiFilters "armeabi", "armeabi-v7a", "x86", "mips"}}

3.在AndroidManifest.xml里配置权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.READ_SETTINGS" /><uses-permission android:name="android.permission.WRITE_SETTINGS" /><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!-- 硬件加速对X5视频播放非常重要,建议开启 --><uses-permission android:name="android.permission.GET_TASKS" />

4.在Application的onCreate()方法中,初始化X5内核

a.App 在启动后(例如在 Application 的 onCreate 中)立刻调用 QbSdk 的预加载接口 initX5Environment ,可参考接入示例,第一个参数传入 context,第二个参数传入 callback,不需要 callback 的可以传入 null,initX5Environment 内部会创建一个线程向后台查询当前可用内核版本号,这个函数内是异步执行所以不会阻塞 App 主线程,这个函数内是轻量级执行所以对 App 启动性能没有影响,当 App 后续创建 webview 时就可以首次加载 x5 内核了

public class PlayVideoApplication extends Application {@Overridepublic void onCreate() {super.onCreate();QbSdk.initX5Environment(this, new QbSdk.PreInitCallback() {@Overridepublic void onCoreInitFinished() {}@Overridepublic void onViewInitFinished(boolean b) {}});}
}

b.目前,由于SDK WebView所提供的WebView类,是对系统WebView的聚合包装,所以:获取系统内核的WebView或者 x5内核的WebView的宽高

android 系统内核

android.webkit.WebView webView = new android.webkit.WebView(this);
int width = webView.getWidth();

x5 内核

com.tencent.smtt.sdk.WebView webView = new com.tencent.smtt.sdk.WebView(this);
int width = webView.getView().getWidth();

5.播放视频的Activity配置

兼容视频播放:

1)享受页面视频的完整播放体验需要做如下声明:

页面的Activity需要声明android:configChanges="orientation|screenSize|keyboardHidden"

2)视频为了避免闪屏和透明问题,需要如下设置
a)网页中的视频,上屏幕的时候,可能出现闪烁的情况,需要如下设置:Activity在onCreate时需要设置:

getWindow().setFormat(PixelFormat.TRANSLUCENT);(这个对宿主没什么影响,建议声明)

b)在非硬绘手机和声明需要controller的网页上,视频切换全屏和全屏切换回页面内会出现视频窗口透明问题,需要如下设置

声明当前<item name="android:windowIsTranslucent">false为不透明。
特别说明:这个视各app情况所需,不强制需求,如果声明了,对体验更有利

c)以下接口禁止(直接或反射)调用,避免视频画面无法显示:

webview.setLayerType()
webview.setDrawingCacheEnabled(true);

6.输入法设置

避免输入法界面弹出后遮挡输入光标的问题
方法一:在AndroidManifest.xml中Activity设置

android:windowSoftInputMode="stateHidden|adjustResize"

方法二:在代码中动态设置:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

6.APP混淆处理

由于我们提供的 TBS jar 已经混淆过,所以 App 混淆时可以不再混淆我们的 TBS jar,或者也可以把我们的混淆策略 proguard 点击下载 加入 App 的混淆策略里注意:如果 App没有按照该规则混淆了 TBS jar,可能导致无法使用 x5内核

下一篇文章,Android 使用WebView 实现播放爱奇艺视频,可全屏(使用的腾讯的X5内核) (二)

参考文章:

ANDROID webview解决视频无法播放问题

Android Webview加载网页视频播放遇到的坑
xumingwang / youkes_browser

webview加载腾讯视频功能的实现

抛弃Android自带webview,使用腾讯qq浏览器x5内核的webview浏览器

Android中接入腾讯TBS浏览器WebView的入坑指南

基于WebView的封装,支持原生和腾讯X5内核切换,支持下拉刷新和进度显示并且做了兼容判断

Android Studio 使用腾讯浏览服务(替换掉系统自带的WebView)

TBS(腾讯浏览服务)

Android 使用WebView 实现播放爱奇艺视频,可全屏(使用的腾讯的X5内核) (一)相关推荐

  1. android x5获取播放地址,Android 使用WebView 实现播放爱奇艺视频,可全屏(使用的腾讯的X5内核) (一)...

    Android 使用WebView 实现播放爱奇艺视频,可全屏(使用的腾讯的X5内核) (一) 发布时间:2018-06-27 18:30, 浏览次数:1438 , 标签: Android WebVi ...

  2. android银行卡匹配、详情展开动画、仿爱奇艺视频拖拽、扫码识别手机号等源码...

    Android精选源码 android实现银行卡匹配信息源码 android实现可以展开查看详情的卡片 下拉刷新,上拉加载,侧滑显示菜单等效果RefreshSwipeRecyclerview andr ...

  3. android银行卡匹配、详情展开动画、仿爱奇艺视频拖拽、扫码识别手机号等源码

    Android精选源码 android实现银行卡匹配信息源码 android实现可以展开查看详情的卡片 下拉刷新,上拉加载,侧滑显示菜单等效果RefreshSwipeRecyclerview andr ...

  4. html视频爱奇艺播放页面,爱奇艺视频播放列表.html

    爱奇艺视频播放列表 *{ margin: 0; padding: 0; } .hot{ margin: 50px auto; width: 1000px; } h3{ font-size: 18px; ...

  5. 爱奇艺视频与腾讯视频竞品分析

    随着视频直播业的火爆,市场上视频直播的APP也层出不穷,这些APP主拼的内容和资源,更需进一步推动用户付费习惯的养成.从用户关注因素出发,以用户体验的多方面的校对市场上热门视频直播类APP进行对比分析 ...

  6. 爱奇艺视频如何联系客服?爱奇艺联系客服攻略

    爱奇艺视频是一款不错的视频,小编在闲的无聊的时候,就会使用爱奇艺来看视频,相信你们也会使用爱奇艺视频来看视频,我们在使用爱奇艺的时候,就会遇到些问题,今天小编为你介绍下:爱奇艺视频如何联系客服?爱奇艺 ...

  7. 【机器学习】机器学习在爱奇艺视频分析理解中的实践

    原标题:大规模机器学习在爱奇艺视频分析理解中的实践 AI 前线导读:视频包含了图像.声音.文字等多种信息,可以表达生动.丰富的内容.随着 AI 时代的带来,互联网视频应用高速发展,视频更成为一种人人可 ...

  8. 爱奇艺视频qsv转换flv格式方法教程

    爱奇艺视频qsv转换flv格式怎么转换呢?众所周知,下载的爱奇艺视频是qsv格式,qsv是一种加密格式,只能在爱奇艺播放器播放,因为这一点,让很多人为之头疼,因为一般的视频转换器拿它也好无办法,难道就 ...

  9. 大规模机器学习在爱奇艺视频分析理解中的实践

    视频包含了图像.声音.文字等多种信息,可以表达生动.丰富的内容.随着AI时代的带来,互联网视频应用高速发展,视频更成为一种人人可生成的内容,数据量暴涨.如何利用机器学习将海量的视频内容充分利用起来,成 ...

最新文章

  1. 19岁就在南大读博的“00后”女生:这是我的学习经历
  2. 2005年2月9日(星期三) 晚上,熱 - 大年初一,首次創作。
  3. RabbitMQ系列之【启动过程中遇到问题及解决方案】
  4. 傻瓜式制作的U盘winpe(支持4G以上U盘)--速度超快
  5. 7-2 停车场管理 (50分)
  6. 迁徙图_虾米音乐上的原住民会迁徙去哪呢?
  7. 如何将Excel表批量赋值到ArcGIS属性表
  8. 2019量子计算机上市公司,2019年第一炮:量子计算机终于来了!
  9. C++二分查找示例(求货物装载量)
  10. vbox里面的Ubuntu虚拟机与主机win7之间设置共享文件夹
  11. Java将hive数据导入到hdfs_sqoop数据导入到Hdfs 或者hive
  12. django开发个人博客系统
  13. 如何固定电脑桌面便签 win7便签怎么设置?
  14. 基于标签传递的重叠社区发现算法(COPRA算法)
  15. 上海交通出行热线电话一览
  16. Ubuntu下安装Remix OS双系统
  17. 微信自定义分享网页标题及内容
  18. Unity3D绘制两圆柱体相贯线
  19. ORACLE 19c via Docker on Mac安装教程客户端配置连接Navicat GUI
  20. 数据库与身份认证:在项目中操作 MySQL

热门文章

  1. java实验Java面向对象编程_Java实验项目 面向对象编程.doc
  2. 9.2 估算活动资源
  3. 《惢客创业日记》2021.05.09-10(周日)真正的高手不炫技
  4. 检测JDK是否安装成功
  5. Linux链接(软链接与硬链接)
  6. C++语音识别接口快速入门
  7. 广告点击率预测(kaggle)
  8. 【简书读书社】每个周末,一起来读简书电子书(第三期)
  9. 驾驭新技术,赋能开发者 CSDN即将亮相2023开放原子全球开源峰会
  10. cocos2d-x 3.4之排行榜的实现