# sdk集成方法
# SDK集成及调用方法简介
该篇主要介绍在下载好demo之后,开发相关Api,集成SDK并安装、测试的相关步骤。
# SDKDemo下载
android依赖:implementation (name:'library-release',ext:'aar')
aar和demo:下载地址 (opens new window)
# sdk集成主要步骤
SDK集成主要是将爱奇艺SDK集成到第三方播放APP中。图示如下:
调用详细步骤,可参考上图阅读
清单文件添加必要权限:
<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" />
如果apk应用目标版本是6.0及以上出现权限适配问题,需自行添加动态权限尝试解决。
添加gradle依赖
- app.gradle添加依赖: implementation (name:’library-release’,ext:’aar’) implementation ‘com.google.code.gson:gson:2.8.5’ implementation “org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.31”
- 工程gradle添加依赖: classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.31”
获取MovieSdk实例(多种构造器,建议使用有回调的),调用系统初始化接口,建议在应用启动application开始调用,内部进行一系列注册校验流程: MovieSdk moviesdk=MovieSdk.init(getApplication,host,listener);
方法调用详情见《sdk调用方法说明及示例》。
新建播放显示playView(必须包含surfaceview),继承自PlayerView,实现getSurfaceViewId和 getLayoutId方法,分别指定surfaceView的id及布局文件的id; 参考TestView,构造方法:TestView(this, moviePlayEntity, this);
方法调用详情见《sdk调用方法说明及示例》。
新建播放页,之后setContentView(playView),实现OnPlayerStateChangeListener接口,得到播放状态回调方法,在相应的方法中进行不同播放状态的界面更新,参考PlayerActivity;
回调方法见《sdk调用方法说明及示例》。
在onCreate及OnDestory中分别回调playView的onCreate和onDestory方法进行资源初始化及销毁回收;
如果不回收可能存在播放问题;
通过新建的视图获取播放控制对象,如果视图为testView,则调用方式为:PlayContract.Presenter playController=testView.getPlayImp();播放,暂停,恢复,快进,停止等相关控制操作;
方法详情见《sdk调用方法说明及示例》。
设置适应影片原始比例的方式为: 设置doSetPlayerSize为true。
# sdk调用方法说明及示例
code | 说明 |
---|---|
403 | 身份标识不合法 |
400 | 请求参数有误,请求失败 |
500 | 请求服务器数据获取失败 |
200 | 返回JSON数据 |
Note: 设备deviceId作为权益校验的标识,一般情况不会变化,但业务方应尽量保存deviceId和设备的信息关系(比如mac地址等)以便出现问题后的维护;如果出现卸载或格式化设备等其他操作导致的devceId发生变化,可以联系客服人员协助换绑设备权益;
# 1 用户注册方法:
系统初始化方法,建议在应用启动application开始调用,内部进行一系列注册校验流程;为确保初始化成功,确认本地ping服务器host网络正常;
请求方法:
方法一:MovieSdk movieSdk =MovieSdk init(Context applicationContext,String host,OnInitListener initListener) (**设置初始化完成回调接口,推荐实现方式**)
方法二:MovieSdk movieSdk =MovieSdk init(Context applicationContext,String host,int netType,OnInitListener initListener)(手动设置网络类型,针对部分有无线有线网络混用的情况)
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
Context | 是 | Context | 上下文 |
host | 是 | string | 本地服务器ip(即为本地服务器ip) |
initListener | 是 | OnInitListener | 初始化完成回调 |
netType | 否 | int | 有线接口: 1无线接口: 2 默认是0,就是按照原来的逻辑,获取当前连接的接口的mac地址 |
- 返回示例
{
"code" : "200",
"msg" : "设备初始化成功",
"data" : {
"deviceId" : "xxxxxx" ,//设备id
"agentCode":"aaaaaaaa"//店铺code
}
}
- 主要返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
deviceId | string | 设备号 |
agentCode | string | 店铺标识 |
# 2 初始化重试
当出现个别情况比如网络差导致初始化失败,可以尝试调用此方法进行重试,成功会回调init方法的initListener接口。
- 请求方法:
movieSdk.sdk_retryInit()
# 3 新建播放显示方法
构造方法
TestView(this,moviePlayEntity,this);
moviePlayEntity字段说明
字段 类型 是否必传 说明 qipuId String 是 影片id orderId String 否 订单id orderTime String 否 订单开始时间,毫秒 orderType int 否 订单类型,包天付费传1,单片付费传2,免费传3 orderPrice String 否 订单价格,免费类型不传
# 4 回调初始化回调方法
# 4.1 播放控制
- void doStart ();开始播放执行方法
- void doPlayOrPause(boolean isResume);暂停或者恢复播放执行方法,true为恢复播放,false为暂停
- void doSeek(long position);快进执行方法;position为快进的时间长度(ms)
- void doStop();停止播放执行方法
- String doGetMovieInfo();获取影片播放信息
- 参数
参数名 | 类型 | 说明 |
---|---|---|
moviePosition | long | 当前播放位置(ms) |
movieTotalTime | long | 影片总长度(ms) |
# 4.2 界面更新
- void showPlayEnd();播放结束回调方法
- void showLoading();播放加载中回调方法
- void showLoadingComplete();播放加载完成回调方法
- void showPause();播放暂停回调方法
- void showPlaying();正在播放回调方法
- void showSeek();快进回调方法
- void showPlayError(int code,String error); 播放错误回调方法,先检查存储服务是否正常; 如果不能恢复,可将错误信息反馈给客服人员协助排查;
- void showPlayBegin ();播放开始回调方法
# 4.3 播放器选择
说明:调用jumpPlayYB(View v)方法切换到YB播放器,调用jumpPlayBP(View v)方法切换到BP播放器
- YB播放器:为调用系统播放器方式,兼容性更好,但启动切换较慢。
- BP播放器:为调用ffmpeg播放器方式,流畅度更佳。推荐使用。
# 播放能力相关集成注意事项
1、开机启动次数及apk启动次数,合作方按照爱奇艺事件投递接口要求传递信息,爱奇艺依据该部分数据做数据统计及分析,后续可提供分析结果给渠道方做业务分析。 2、调用播放接口时,对于影片不可播时需给予用户友好提示,诸如影片已下线,请观看其他内容之类提醒。
3、由于市场Android碎片化严重,播放器只能保证大部分设备的播放能力。
4、因此在集成测试阶段,渠道方应该使用DEMO程序在即将部署的店面设备上充分测试,在确保播放功能及稳定性后,再进行店面部署。
5、推荐先使用BP播放器进行播放测试;如果存在问题,切换YB播放器进行播放测试。