Android -VOD SDK
1 概述
众多客户希望能拥有更多的app设计能力,特别是有自己设计UI, 开发人员资源的公司。为此,特提供android点播集成离线SDK,以便客户可以针对自己的业务场景设计最符合自己业务场景的离线播放器,相关界面需要由开发人员根据设计来恰当的布局(本sdk的主要功能是下载和播放)。
2 SDK使用介绍
2.1 开发环境要求
pc操作系统:64位windows系统
jdk:1.5以上
eclipse:3.5以上 建议使用官方已经集成adt的eclipse或android studio
android:4.0以上
设备:需要访问硬件,请不要使用模拟器进行开发
2.2 需要导入的jar
gensee_common.jar
gensee_hb.jar
gensee_doc.jar
gensee_vod_ol.jar
gensee_baseplayer.jar
将上述jar拷贝到工程libs目录并通过build path将其导入工程中。
2.3 动态库so
libAVCDecoder.so
libgsolcomp-jni.so
libH264Android.so
libspeex.so
libstlport_shared.so
libuctinyxml.so
libucamf.so
libucbase.so
libucdflvreader.so
libucflv.so
libucnet.so
libucoffplayer.so
libucrtmpcli.so
libunidecoder.so
libgensee-log.so
libSoundTouch.so
//文档需要,如果没有文档(ppt)功能,可以不用添加下面的库
libandroid-swfplayer.so
libSwfView.so
libucjpeg.so
请将上述动态库拷贝到工程libsarmeabi目录下,如果没有则新建该目录。若还有armeabi-v7a,同样拷贝一份。x86和arm64-v8a请分别拷贝到工程中。
2.4 权限及配置
2.4.1 权限
<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"/>
注:如果因为视频和文档出现内存不足,请在application节点下面添加:android:largeHeap="true"。
2.4.2 代码混淆
若app打包需要进行代码混淆,请添加
-dontwarn com.gensee.**
-keep class com.gensee.**{*;}
3 快速接入
点播的主要功能在VodSite、VodDownloader和VodPlayer中。
Step1:全局初始化为下载或者播放做准备
VodSite.init(context,null) //建议在app启动时优先调用 进行释放 VodSite.release() //app退出的时候调用
Step2:创建VodSite实例
vodSite = new VodSite(context) 设置监听 vodSite.setVodListener(onVodListener) 获取点播对象 vodSite.getVodObject(initParam)//为下载获取的话须initParam.setDownload(true); onVodListener.onVodObject(String vodId){ 得到点播id,此时vodId可以用来下载或播放 }
Webcast站点点播信息和initParam对照图
Training站点点播信息和initParam对照图
Step4:下载点播
VodDownLoader downloader = VodDownLoader.i downloadListener,saveDir); downloader.download(vodId) //下载或停止后恢复下载 downloader.stop(vodId) //停止(暂停)下载 下载完成响应 onDownloadListener.onFinished(String vodId,String localPath){ 下载完成后通知点播的本地路径:localPath }
Step5:播放
创建播放器实例
VODPlayer player = new VODPlayer ();
设置视频显示view,用于显示视频画面
player.setGSVideoView(gsVideoView);
设置文档显示view,用于显示文档内容。
player.setGSDocViewGX(gsDocViewGx);
开始播放
1.播放已经下载好的点播
player.play (localPath, vodPlaylistener, "",false);
2.直接在线播放
player.play (vodId, vodPlaylistener, "",false);
扩展更多功能
vodSite.getQaHistory(vodId) //获取历史问答记录,由onQaHistory响应 vodSite.getChatHistory(vodId) //获取聊天记录,由onChatHistory响应 vodSite.getVodDetail(vodId) //获取点播详细信息,由onVodDetail响应
下载:
downloader.download() //启动已经存在且未完成的任务 downloader.delete(vodId) //删除下载任务 downloader.stop(vodId) //停止或暂停下载任务 downloader.stop(vodId) //停止或暂停下载任务
播放:
player.pause() //暂停播放 player.resume() //暂停恢复播放 player.stop() //停止播放 player.release() //释放player对象
4 响应事件(回调)
4.1 点播信息回调OnVodListener
点播信息回调是通过点播编号或点播id进行初始化,得到播放或下载的参数,该参数还可以获取点播的聊天记录或问答记录的响应。
4.1.1 获取点播响应onVodObject (String vodId)
回调说明:app调用VodSite的getVodObject(InitParam)之后,如果初始化成功则响应onVodObject,并且返回vodId,vodId可以直接作为播放、下载、获取聊天记录、获取问答记录的参数。错误响应onOlErr(int err)。
4.1.2 获取聊天记录响应onChatHistory(String vodId, List<ChatMsg> list, int pageIndex, boolean more)
回调说明:app调用VodSite的getChatHistory后的响应,其中vodId为对应的点播id,list为该点播的当前请求分页的聊天记录。pageIndex为对应请求的分页页码。more为true代表还有更多的聊天记录,可以继续请求pageIndex+1分页的聊天记录。
ChatMsg msg; msg.getContent();//消息内容 msg.getSenderId();//发送者用户id msg.getSender();//发送者昵称 msg.getTimeStamp();//发送时间,单位毫秒
4.1.3 获取问答历史记录响应onQaHistory(String vodId, List<QAMsg> list,int pageIndex, boolean more)
回调说明:app调用getQaHistory之后的响应,其中vodId为对应的点播id,list为该点播的当前请求分页的问答历史记录。pageIndex为对应请求的分页页码。more为true代表还有更多的问答记录,可以继续请求pageIndex+1分页的问答记录。
QAMsg msg; msg.getQuestion();//问题 msg.getQuestId();//问题id msg.getQuestOwnerId();//提问人id msg.getQuestOwnerName();//提问人昵称 msg.getQuestTimgstamp();//提问时间 单位毫秒 msg.getAnswer();//回复的内容 msg.getAnswerId();//“本条回复”的id 不是回答者的用户id msg.getAnswerOwner();//回复人的昵称 msg.getAnswerTimestamp();//回复时间 单位毫秒
4.1.4 错误响应onVodErr(int errCode)
回调说明:app 调用VodSite中函数出错响应。错误码定义在OnVodListener中。
int ERR_UN_INVOKE_GETOBJECT = -201; //没有调用getVodObject int ERR_VOD_INTI_FAIL = 14; //点播初始化失败 int ERR_VOD_NUM_UNEXIST = 15; //点播编号不存在或点播不存在 int ERR_VOD_PWD_ERR = 16; //点播密码错误 int ERR_VOD_ACC_PWD_ERR = 17; //帐号或帐号密码错误 int ERR_UNSURPORT_MOBILE = 18; //不支持移动设备 int ERR_DOMAIN = -100; // domain不正确 int ERR_TIME_OUT = -101; // 超时 int ERR_UNKNOWN = -102; // 未知错误 int ERR_SITE_UNUSED = -103; // 站点不可用 int ERR_UN_NET = -104; // 无网络 int ERR_DATA_TIMEOUT = -105; // 数据过期 int ERR_SERVICE = -106; // 服务不正确 int ERR_PARAM = -107; // 参数不正确 int ERR_THIRD_CERTIFICATION_AUTHORITY = -108; //第三方认证失败
4.1.5 获取详细信息响应onVodDetail(VodObject vodObject)
回调说明:获取点播详细信息
vodObject.getStartTime() // 点播生成的开始时间,相对于1970的UTC时间毫秒数 vodObject.getEndTime() // 点播生成结束时间,相对于1970的UTC时间毫秒数 vodObject.getDuration() // 点播时长,单位毫秒 vodObject.getStorage() // 点播存储占用大小,单位B vodObject.getVodSubject() //点播标题 vodObject.getVideoWidth() //视频宽 vodObject.getVideoHeight() //视频高
4.2 下载状态和下载进度回调OnDownloadListener
OnDownloadListener作为通知app下载状态和下载进度的接口定义,在点播下载过程中会相应的调用所定义的函数,app需要实现本接口并传递一个有效的实例给sdk。
注:回调函数非UI线程线程调用,要更新UI请在UI线程里面更新。
4.2.1 下载前准备onDLPrepare(String vodId)
回调说明:开始下载前的准备,app可以根据自身需要处理或不处理。vodId为下载id。
4.2.2 下载开始onDLStart(String vodId)
回调说明:下载开始了,app可以对应的更新UI。vodId为对应的下载id。
4.2.3 下载完成onDLFinish(String vodId,String localPath)
回调说明:下载完成,vodId为对应的下载id。localPath为本地路径。
4.2.4 下载进度onDLPosition(String vodId, int position)
回调说明:下载开始以后进度上报,app根据进度更新UI。vodId为当前下载id,position为下载进度,取值范围0-100,即0%-100%。
4.2.5 下载停止onDLStop(String vodId)
回调说明:下载停止或中断。用户暂停、用户停止、下载错误而中断都会被调用。app对应的处理UI的刷新,vodId为对应的下载id。
4.2.6 下载出错onDLError(String vodId, int errorCode)
回调说明:下载出错上报,app需要对应处理。vodId为对应点播的下载id,其中错误码定义在ErrorCode中:
int SUCCESS = 0; int OBJECT_HAVE_EXIST = 1; // 录制件已在下载队列中 int DOWNLOADING_HAVE_EXIST = 2; // 当前已有下载任务 。目前的机制是单任务下载 int SDCARD_ERROR = 3; // SD卡异常 int OBJECT_NOT_EXIST = 4; // 目标不存在 int OBJECT_IS_NULL = 5; // 对象为空 int DOWNLOADING_URL_NULL = 6; //下载地址为空 int FAILED = 7; //下载失败 int ERR_UN_INVOKE_GETOBJECT = -201; //没有调用getVodObject int SDCARD_OR_FILEDIR_UNABLE = 9; // SD或传入的存储目录不可用 int ERROR_LICENSE = 12; // license(点播并发) 满 请联系相关人员
4.3 播放状态回调OnVodPlayListener
播放状态回调包含了播放的状态、错误、进度的上报,在播放过程中被调用,一般情况下都需要实现该接口,并做好相关处理。
4.3.1 播放开始onInit(int result, boolean haveVideo, int duration, List<DocInfo> docInfos)
回调说明:VODPlayer初始化完成,播放开始。App调用VODPlayer的play之后,如果正常则onInit将会被调用。App根据参数自身需要处理。
参数说明:result,初始化结果;定义在OnVodPlayerListener里面:
int RESULT_OK = 0; //初始化成功,可以认为播放开始 int ERR_INIT_FAILURE = 7;//初始化失败 int RESULT_LICENSE = 0x0c;//并发不足,请找相关人员扩充点播并发 int RESULT_LOCAL_FILE_UNCOMPLETE = 10015;// 已下载点播的文件不完整 haveVideo 有无视频; duration 该多媒体文件的时长,单位毫秒; docInfos 多媒体文件中的文档(章节)列表; 注意需要和onDocInfo一起使用,不为空的时候更新列表和界面,因onInit可能返回空的章节列表 PageInfo: getTitle()//返回该页标题 DocInfo: getDocName() //返回该文档名称 getPages()//返回所有页(PageInfo[])
4.3.2 播放已暂停onPlayPause()
回调说明:播放暂停了,一般从播放变成暂停状态,由app调用pause后触发。
4.3.3 播放已恢复onPlayResume()
回调说明:播放已恢复了,一般从暂停变成播放状态,由app调用resume后触发。
4.3.4 播放停止onPlayStop()
回调说明:播放停止。播放结束或者app调用stop后触发。
4.3.5 音频电频值onAudioLevel(level)
回调说明:返回即时的音频电频值,app可以根据自身需要进行处理,范围0-100。
4.3.6 播放进度onPosition(position)
回调说明:在播放过程中sdk会每过一秒上报一次进度。postion为播放进度,单位毫秒,范围0-duration之间。
4.3.7 视频分辨率上报onVideoSize(postion, width,height)
回调说明:当视频第一次显示或有大小变化时候,onVideoSize都会被调用,离线sdk视频显示会根据view大小来适合显示画面,app可以适当调整GSVideoView的大小,当然不调整也没有关系。
4.3.8 播放过程中文档翻页及分辨率onPageSize(int pos, int width, int height)
回调说明:当某个进度有文档的时候,该函数被sdk调用并返回当前的时间戳(进度)pos,app可以根据pos去匹配是哪一页文档马上被显示。width 文档宽,height 文档高度。
4.3.9 进度更改完成onSeek(int position)
回调说明:进度变更完成后该函数被sdk调用并返回变更后的进度。对应进度变更是app调用seek之后会触发。即快进、快退、拖动的动作。
4.3.10 播放出错onError(int errCode)
回调说明:整个播放过程中出现错误时,该函数被sdk调用,并返回对应的错误码。其中错误码定义在OnOLPlayListener中:
int ERR_PLAY = 1; //播放失败 int ERR_PAUSE = 2; //暂停失败 int ERR_RESUME = 3;//恢复失败 int ERR_STOP = 4; //停止失败 int ERR_SEEK = 5; //seek失败 int ERR_UN_INVOKE_GETOBJECT = -201; //没有调用getVodObject int RESULT_LICENSE = 12 // license(点播并发)人数满,请找相关人员扩充点播并发
引用例如OnVodPlayListener.ERR_PLAY。
4.3.11 在线播放缓冲通知onCaching(boolean isCaching)
回调说明:一般是在线播放出现缓冲的情况下被调用,其中isCathing为true代表进入缓冲,false代表缓冲完成。
4.3.12 播放中聊天消息回调onChat(List<ChatMsg> chatMsgs)
回调说明:点播播放中会随着播放进度回调聊天消息,约一秒一次。本接口是可订阅的,默认不会回调,如果要同步显示聊天消息则在播放前进行GenseeConfig.isNeedChatMsg = true;下载同理,在downloader实例创建之前GenseeConfig.isNeedChatMsg = true进行赋值。ChatMsg msg:
msg.getRichText()//富文本 msg.getSender()//发送者名称 msg.getSenderId()//发送者id msg.getContent()//纯文本 msg.getTimeStamp()//相对于播放开始的时间 单位毫秒
4.3.13 视频开始播放onVideoStart()
回调说明:点播播放过程中视频首次开始显示通知。注意是视频开始显示,点播开始播放不代表视频就开始显示,请区别开。
4.3.14 文档(章节)响应onDocInfo(List<DocInfo> list)
回调说明:需要配合onInit响应进行同步使用,两个地方都需要同步一下(不为空更新列表和界面)。因为可能在onInit里面没有响应章节,而在这个地方响应章节列表。参考onInit中DocInfo的说明。
4.3.15 聊天后审通知onChatCensor(String type, String id)
回调说明:当回调的时候,说明需要删除此前的聊天消息达到审核的作用。
type:类型,取值定义在OnVodPlayListener中(如OnVodPlayListener.CHATCENSOR_MSG)
String CHATCENSOR_MSG = "msg"; //id是消息id,用id删除单条
String CHATCENSOR_USER = "user"; //id是用户id,强转id为long型,删除这个用户id所有的聊天消息。
Id:根据type来确认id的含义,type为msg时候,id是消息id;type为user的时候,id是用户id。
5 调用API
5.1 VodSite 点播管理器
VodSite定义了点播sdk的初始化api,包括点播信息的获取、下载和播放的运行初始化(即运行条件)。
5.1.1 static boolean init (Context context,OnTaskRet ret) sdk功能全局初始化
静态函数,全局初始化,优先调用,建议app启动的时候调用初始化。全局调用一次即可。
VodSite.init (this, new OnTaskRet() { @Override public void onTaskRet(boolean ret,int ret1, String desc) { if (OK == ret) { //初始化成功,可以进行相关的下载或播放 } else { //初始化失败 } } });
5.1.2 static void release() sdk资源销毁
静态函数,与全局初始化对应,一般在app退出的时候调用,确保调用和init是成对出调用。并且sdk的下载和播放都应该要在sdk初始化和销毁之间调用。
5.1.3 static void setTcpProxy(IProxy proxy)设置代理
如app需要使用自己的代理,则需要对sdk进行设置,这个设置可以在任何时候操作。app必须实现代理接口并返回代理ip和端口。不使用代理则忽略。
5.1.4 getVodObject(InitParam initParam) 点播数据初始化
获取点播数据,连接服务器,获取点播的相关资源。
如果调用成功,sdk以OnVodListener的onVodObject通知app。
可参考快速接入的步骤。
5.1.5 answerVote 参与投票(没有投票信息 暂不支持)
参与投票,收到投票通知后根据用户填写项反馈。不要修改vote的其他信息。
参数:Context context app上下文
vodId getVodObject返回的vodId
VoteMsg vote 投票消息
5.1.6 setVodListener(OnVodListener listener)设置点播事件监听
设置点播初始化响应的监听,如果全部启用在需要在调用getVodObject之前设置,其中包含初始化成功、失败的响应,获取聊天记录和问答历史的响应。
5.1.7 getChatHistory(String vodId,int pageIndex)获取点播聊天记录
分页获取聊天记录,参数为vodId,在getVodObject成功之后返回。而聊天记录在OnVodListener的响应onChatHistory中返回。pageIndex为将要请求的分页,从1开始。
5.1.8 getQaHistory(String vodId, int pageIndex)获取点播问答历史记录
分页获取问答历史记录,参数为vodId,在getVodObject成功之后返回。而点播问答历史记录在OnVodListener的响应onQaHistory中返回。pageIndex为将要请求的分页,从1开始
5.2 InitParam 初始化参数结构
InitParam 实例作为initVod的入参,主要集合了initVod所需要的各个参数,因此是简单的数据设置。
5.2.1 setDomain(String vodDomain)设置站点域名
设置domain。如:demo.gensee.com
5.2.2 setNumber(String vodNumber)设置点播编号
设置点播编号,为8位数字组成的字符串。
5.2.3 setLoginAccount(String loginAccout)设置站点登录帐号
若在站点管理设置了需要登录选项,则需要登录。填入站点认证帐号。
5.2.4 setLoginPwd(String loginPwd) 设置站点登录密码
若在站点管理设置了需要登录选项,则需要登录。填入站点认证密码。
5.2.5 setVodPwd(String vodPwd)设置点播密码(点播口令)
若该点播配置了点播密码,则需要填入点播保护密码,即口令。
5.2.6 setNickName(String nickName)设置昵称
设置昵称
5.2.7 setServiceType(ServiceType serviceType)设置站点类型
设置站点类型webcast,meeting,training 三种。com.gensee.api.ServiceType ST_CASTLINE,ST_MEETING, ST_TRAINING;
5.2.8 public void setLiveId(String liveId)设置点播id
设置点播id,和vodNumber对应,只要有一个即可,适合已知点播id的app。
5.3 VodDownLoader 点播下载器
VodDownLoader包含了点播下载相关的接口定义,包括下载任务的删除、下载列表的获取、下载模式的设置。不支持外部构造,所有的实VodDownLoader实例都通过静态函数instance来返回。
5.3.1 static VodDownLoad instance(Context context, String userId, OnDownloadListener listener,String fileDir)
返回一个VodDownLoader实例,失败则返回null。其中userId会作为点播下载后的存储路径,如果没有userId,可以使用uuid来弥补。sdk会通过downloadListener将下载任务的进度、状态通知app,app根据状态来更新UI。fileDir为用户指定下载路径,如果为空sdk会使用默认下载路径”/sdcard/GSVod/DownLoad/”。
5.3.2 static VodDownLoad instance(Context context,OnDownloadListener listener,String fileDir)
返回一个VodDownLoader实例。fileDir为用户指定下载路径,如果为空sdk会使用默认路径”/sdcard/GSVod/DownLoad/”。
5.3.3 static void release()释放VodDownLoader实例
释放VodDownLoader,释放资源和相关的内存。与instance成对调用。
5.3.4 delete(String vodId)删除下载任务
删除一个下载任务,如果该任务正在下载,则请先停止后在进行删除。vodId为下载的id。
5.3.5 delete(List<String> vodIds)删除一组下载任务
删除一组下载任务,vodIds为要删除的id列表。
5.3.6 int download(String vodId)开始下载任务
调用后使得vodId对应的任务开始下载。返回的是错误码。
5.3.7 stop(String vodId)停止或暂停一个下载任务
调用后将vodId对应的任务停止,也作为暂停使用,要继续下载则调用download。
5.3.8 List<VodDownLoadEntity> getDownloadList()获取下载列表
获得下载任务列表,VodDownLoadEntity包含了该任务对应点播的信息,点播名称,已经下载id、下载进度、下载状态等。
5.3.9 setAutoDownloadNext(boolean isAuto)上个任务下载完成后自动进行下一个任务
下载设置,上个任务完成后,自动下载下一个点播件。
5.3.10 download()程序启动自动下载
初始化话完成后调用,sdk会自动进行未完成的下载任务。
5.4 VODPlayer 点播播放器
gensee 点播播放器,提供控制播放的相关接口并播放gensee点播件的音视频以及文档。其中在播放视频时,根据app自身的功能设计,pause和resume要与activity对应的生命周期匹配。支持app构造VODPlayer的实例
5.4.1 setGSVideoView(GSVideoView videoView)
设置视频显示的UI,GSVideoView是用来显示视频的,尽可能在播放开始前设置。如果只播放音频,那么不需要调用这个函数。
5.4.2 setGSDocView(GSDocView docHolder)
设置文档显示的UI,sdk 中GSDocView是用来显示文档的,需要在播放开始之前调用。
5.4.3 setGSDocViewGx(GSDocViewGx docHolder)注册文档显示控件
设置文档显示的UI,sdk 中GSDocView是用来显示文档的,需要在播放开始之前调用,与setGSDocView相比,增加了支持ppt动画效果。
5.4.4 play(String filePath, OnVodPlayListener listener,cacheDir,boolean isAudioOnly)播放
调用play进行在线、离线播放。返回执行结果,true,执行成功;false,执行失败。filePath是一个以完整的本地文件路径,以.xml结束;也可以是点播id。直到真正开始播放时,listener的onInit被sdk调用,app也就知道真正播放的时机、播放的信息,包括时长、文档,是否有视频。如果播放失败,listener的onError被调用,因此app要处理好相关错误码。
filePath 在线播放代表一个点播id,离线播放代表一个以 “.xml”结尾的本地路径。
cacheDir在线播放缓存目录,在线播放必须,无效或不存在会使用默认目录。离线播放可缺省。
listener 播放监听
isAudioOnly true 只播放声音/false 同时播放音视频,对应只播放声音的应用选择true会更好,注意如果播放的时候isAudioOnly传入是true(纯音频)的话,播放过程中无法切换为音视频。
5.4.5 boolean pause()暂停播放
暂停播放,当播放器在播放的时候,使播放器暂停播放。调用成功的时候响应listener的onPlayPause。
返回执行结果,执行成功 true / 执行失败 false。
5.4.6 boolean resume()恢复播放
恢复播放,当播放器暂停的时候,使播放器继续播放(不是重新播放)。调用成功的时候响应listener的onPlayResume。
返回执行结果,执行成功 true / 执行失败 false。
5.4.7 boolean stop()停止播放
停止播放,调用play之后,即当播放器已经播放或正在播放,使播放器停止播放。调用不会响应listener的onPlayStop。
返回执行结果,执行成功 true / 失败fasle。
5.4.8 boolean seekTo(int position)变换进度
定位播放器的播放位置,实现拖动,快进快退,文档章节选择。position单位毫秒。取值为0-时长之间。调用成功后会响应listener的onSeek。
返回执行结果,执行成功true/执行失败false。
5.4.9 boolean release()释放播放器
释放播放器资源。不使用播放器的时候进行调用。如果要重新实例化一个播放器,则需要将已有的播放器实例进行释放。
返回执行结果,执行成功true/失败false。
5.4.10 boolean setSpeed(PlaySpeed speed, OnTaskRet ret)设置播放速度
改变播放速度,speed为期望的播放速度;ret为setSpeed执行结果回调,可传null。speed设置后有效时间为本次播放结束,即恢复到默认,用同一个vodPlayer实例再次播放会以正常速度播放;若期望再次播放还是上次的速度,则应用层在再次播放前再次设置上次的速度。speed取值如下
enum PlaySpeed { SPEED_NORMAL, //1.00倍速度 正常速度(默认) SPEED_125, //1.25倍速度 SPEED_150, //1.50倍速度 SPEED_175, //1.75倍速度 SPEED_200, //2.00倍速度 SPEED_250, //2.50倍速度 SPEED_300, //3.00倍速度 SPEED_350, //3.50倍速度 SPEED_400; //4.00崩速度 }
5.4.11 boolean videoSet(boolean isClose, OnTaskRet taskRet)开关视频
播放过程中控制视频开关,isColse 为true 表示关闭视频,false为开起视频。目前这个关闭的作用是提高快速播放或设备较差情况下的性能,并未减少网络流量。
5.5 GSDocViewGx (GSDocView) 文档显示UI
显示文档的UI,可以在布局文件中添加,也可以在代码里面创建。其背景默认为白色,可以由app自定义其背景。内容显示模式由app自行决定。GSDocViewGx 是支持ppt动画的文档显示控件。当本sdk上线后请使用新的GSDocViewGx。接口和GSDocView 一致。
5.5.1 setBackgroundColor(int color)
设置文档ui的背景显示,默认是白色。
5.5.2 showFillView()
文档内容显示模式,完全填充UI区域。非等比拉伸。
5.5.3 showAdaptView()
文档内容显示模式,适合UI自身显示。等比拉伸,以内容:UI的较小者为拉伸系数。
5.5.4 showSourceScall()
文档内容显示模式,原始尺寸显示。不拉伸。
5.6 GSVideoView视频显示UI
继承SurfaceView,具有SurfaceView的特性,主要用来显示视频。自动适应UI,因此外部无需再次更改显示大小。可以在布局文件中添加,也可以由代码来创建该UI的实例。
5.6.1 renderDefault()去除停留的视频画面
可以在视频停止后调用,清除视频最后的画面。
5.6.2 setDefColor(int defColor)视频背景颜色
设置视频背景颜色。默认为黑色。
5.7 GenseeLog GenseeSDK日志工具
GenseeLog 是sdk中的日志工具类,其中包括日志的处理和上传。注意工具类能做的是sdk内部流程日志,至于app的日志以及crash的日志需要由app自行处理和收集。
5.7.1 reportDiagonse(Context context, String desc,ServiceType serviceType)上传日志
该函数将sdk的日志上传到服务端。返回值是上传后日志的下载地址。已经有日志文件的情况下可以在任何时候进行上传
context:app context,日志的描述
desc:该日志的描述或表现描述
serviceType:和加入一样,webcast站点填写ServiceType.WEBCAST,training站点填写ServiceType.TRAINING
返回值:日志的下载路径
6 代码实例
6.1 VodSite初始化
6.1.1 init初始化
// app 启动的时候调用一次即可 可以处理返回值
VodSite.init (this, new OnTaskRet () { @Override public void onTaskRet(Boolean ret,int id, String desc) { //1、可以初始化下载模块进行下载任务 2、可以初始化视频模块进行视频播放 if (ret) { //TODO } else { } } });
6.1.2 setTcpProxy
//代理使用,如果app有自己的代理,调用setTcpProxy,然后在IProxy的ip和端口回调中返回相应的代理ip和代理端口,没有代理则无需调用。此函数任何时候都可以调用。
VodSite.setTcpProxy(new IProxy() { @Override public int getProxyPort(int arg0) { //返回代理端口 return arg0; } @Override public String getProxyIP(String arg0) { //返回代理ip地址 return null; } });
6.2 com.gensee.pdu.GSDocView代码实例
layout: <com.gensee.pdu.GSDocViewGx android:id="@+id/docView" android:layout_width="dp" android:layout_height="dp" /> width and height: android:layout_width和android:layout_height 根据需要自行控制。 docView = (GSDocViewGx) findViewById(R.id.docView); VODPlayer p = new VODPlayer(); p.setDocViewGx(docView);
6.3 VODPlayer代码实例
下述代码仅为示范使用,相关的参数或调用时间需要根据app的业务来调整。
6.3.1 音视频
private void initPlayer() { if (mPlayer == null) { mPlayer = new VODPlayer(); mPlayer.setGSVideoView(mGSVideoView); mPlayer.setDocViewGx(mDocView); mPlayer.play(localPath, this); } }
6.3.2 播放进度
public void onPostion(int postion) { seekBar.setProgress(postion); }
6.3.3 InitParam参数初始化
InitParam initParam = new InitParam(); initParam.setDomain(edtDomain.getText().toString()); initParam.setNumber(edtNumber.getText().toString()); initParam.setLoginAccount(edtAccount.getText().toString()); initParam.setLoginPwd(edtLoginPwd.getText().toString()); initParam.setVodPwd(edtVodPwd.getText().toString()); initParam.setServiceType(ServiceType.ST_CASTLINE); initParam.setDownload(isDownload);// isDownload true 下载/ false 播放 //如果点播启用了第三方认证,请准确填写你们自己的K值 initParm.setK(你们站点的第三方认证K); VodSite vod = new VodSite(); genseeComp.getVodObject(this, initParam);