

2016/8/12
VodSDK / Player-VodSdkForAndroid3.3.2-2016.08.15.rar
1、基于hls的点播播放过程中，选择文档格式为png时候，底层因路径而写文件失败，导致文档不显示。
2、点播的数据统计中用户id是gensee的用户id，setUserId符合要求(>1000000000)时，使用第三方用户id（需求）

2016/8/16
RtSDK / Rt-VodSdkForAndroid3.3.2-2016.08.17.rar
1、文档首次翻页gotoPage  后续引入的bug

2016/8/22
PlayerSDK / Player-VodSdkForAndroid3.3.2-2016.08.22.rar
1、底层处理超出UTF-8的emoji表情，昵称里面的变成* ,聊天问答内容里面变成[emoji],

2016/8/26
RtSDK / Rt-VodSdkForAndroid3.3.2-2016.08.26.rar
1、SDK支持手机反向辨率（例如720*1280）

2016/8/30
RtSDK / Rt-VodSdkForAndroid3.3.2-2016.08.30.rar
1、添加RtSdk：audioMuteMic(boolean mute, OnTaskRet taskRet)

2016/8/31
PlayerSDK/Player-VodSdkForAndroid3.3.2-2016.08.31.rar
1、OnPlayListener 增加onScreenStatus(boolean isAs) //桌面共享开启状态通知
1、OnPlayListener 增加onModuleFocus(int mode)//客户端控制web布局响应

2016/9/10
PlayerSDK/Player-VodSdkForAndroid3.3.2-2016.09.10.zip
1、支持小班课视频关闭无消息onVideoEnd
2、聊天表情支持输入流配置

3、点播支持视频实际比例和期望比例不一致的情况

2016/11/15
vod sdk
1、点播秒进，缩短了加载时间，play函数增加了 bool isAudioOnly true代表只播放声音/false 播放音视频
2、点播CDNLIST 优化（内部变化）
3、点播组织者并发（内部变化）
4、增加了随时发送日志接口 GenseeLog.reportDiagonse(Context context, String desc,ServiceType serviceType)
5、处理了下载进度99-100时间很长的现象
6、播放onInit result增加了一个响应码（已下载点播问文件不完整）
7、修改了部分点播播放结束时，时间比时长少一秒的问题
8、InitParam setNickName为空不允许加入，（域名、编号或id、servicetype、nickName）有一个为空都会报参数不全ERR_PARAM

playersdk直播
1、OnPlayerListener 增加了onIdcList(List<PingEntity> idcs)返回线路列表
2、Player增加了线路切换接口setIdcId(String idcId, OnTaskRet taskRet)
3、Player增加了获取当前线路的idcId 接口String getCurIdc()
4、增加了随时发送日志接口GenseeLog.reportDiagonse(Context context, String desc,ServiceType serviceType)
5、InitParam setNickName为空不允许加入，（域名、编号或id、servicetype、nickName）有一个为空都会报参数不全ERR_PARAM

RtSdk 直播
1、增加了美颜的采集view（GSLocalVideoView） 需添加gensee_video.jar和 libandroid_videocore.so
2、GSLocalVideoView增加了美颜效果的开关switchBeauty(boolean isOpen)
3、增加了随时发送日志接口增加了无需加入直播就能上传日志的接口GenseeLog.reportDiagonse(Context context, String desc,ServiceType serviceType)
4、处理了退出时引起的crash
5、InitParam setNickName为空不允许加入，（域名、编号或id、servicetype、nickName）有一个为空都会报参数不全ERR_PARAM
6、资源文件libresource添加了string资源，同时更新下资源（libresource）。

2016/12/19
RtSDK
1、视频预览分辨率设置无效修改

PlayerSDK
1、取消直播加入失败的情况下自动release（加入失败情况下某些情况下没有响应onJoin，实际上是响应了的）



2016/12/19
RtSDK
1、视频预览分辨率设置无效修改

PlayerSDK
1、取消直播加入失败的情况下自动release

2017/01/05
RtSDK
1、再次修改onNetworkReport（网络强度）的响应灵敏度
VodSDK 
1、修正离线播放onInit响应后，seek、pause调用的正确性

2017/3/8 
VodSDK
1、点播更新秒进引起的seek（onInit）无效，seek（时长计算不正确）无效，
拖动时候文档顺序（应该直接从seek之后开始显示）显示的问题

RtSDK
1、直播过程中切换网络（特殊网络-内外网）重连不上的问题

PlayerSDK
1、增加了onCameraNotify(int notify)函数，空实现即可

2017/5/4
PlayerSDK
1、聊天消息增加消息id（uuid）
2、聊天消息接收和发送统一为ChatMsg
   (1)接收处理：
    ChatMsg msg；
	    String id = msg.getId();//消息id
	    long userId = msg.getSenderId();      //发送者id
		String senderName = msg.getSender();  // 发送者昵称
		int senderRole = msg.getSenderRole(); //发送者角色
		String text = msg.getContent();       //纯文本
		String rich = msg.getRichText();      //富文本
		int onChatID = msg.getChatId();//发送者（msg.getSenderId()）接收消息的chatId
	经上述代码处理后和之前兼容
	(2)发送处理:
	    String msgId = UUID.randomUUID().toString();//消息id
		final ChatMsg msg = new ChatMsg(content,richText,ChatMsg.CHAT_MSG_TYPE_PUBLIC,msgId);//纯文本、富文本消息类型，消息id（uuid）
		msg.setSender(senderName); //发送者昵称
		msg.setSenderId(senderId); //发送者id
		msg.setSenderRole(role);   //发送者角色
		msg.setChatId(chatId);//私聊的话填写接收人的chatId，公聊不用
3、OnChatListener增加聊天审核接口onChatcensor(String type, String id) 
   type:
   OnChatListener.CENSOR_TYPE_MSG  //msg类型 删除对应id(msgId)的聊天消息
   OnChatListener.CENSOR_TYPE_USER //user类型，删除id(userId)的所有聊天记录
   
   
4、OnChatListener.onChatWithPublic参数变更为ChatMsg对象,onChatWithPublic(ChatMsg msg),处理照2.（1）
5、OnChatListener.onChatWithPerson参数变更为ChatMsg对象,onChatWithPerson(ChatMsg msg),处理照2.（1）
6、Player.chatToPublic/chatToPersion聊天发送接口参数变更为ChatMsg对象和OnTaskRet对象，(ChatMsg msg, OnTaskRet taskRet) 处理照2.（2）

7、聊天表情library需要依赖gensee_common.jar
8、OnPlayListener增加打赏功能接口：
    void onRewordEnable(boolean isAliPay,boolean isWx);//打赏的支持能力，目前只支持支付宝
	void onRedBagTip(RewardResult result);//打赏结果通知
	void onGotoPay(PayInfo info);//打赏订单响应，此后需要app调用支付宝进行支付
9、OnPlayListener增加第三方投票 onThirdVote(String url);


RtSDK
1、自己发送的私聊和公聊sdk不再回调，app在发送的时候自行处理显示，可参如下
接收公聊和私聊：IChatCallback 增加回调函数onChatMessage(ChatMsg msg)；公聊、私聊消息的回调，取代原有的onChatWithPublic、onChatWithPersion
取代修改：

        String id = msg.getId();//消息id
		String senderName = msg.getSender();//发送者昵称
		String text = msg.getContent();//聊天纯文本
		String richText = msg.getRichText();//聊天富文本
		long senderId = msg.getSenderId();//发送者id
		int role = msg.getSenderRole(); //发送者角色
		
		switch (msg.getChatMsgType()) {//消息类型  公共聊天/私聊
		case ChatMsg.CHAT_MSG_TYPE_PUBLIC:  //公共聊天
		    //调用原有代码的onChatWithPublic  去掉“@verride” 再加上一个role，没有用到role忽略role
			onChatWithPublic(senderId, senderName, text, richText, id);
			break;
		case ChatMsg.CHAT_MSG_TYPE_PRIVATE:
		    //调用原有代码的onChatWithPersion  去掉“@verride” 再加上一个role，没有用到role忽略role
			onChatWithPersion(senderId, text, richText,id);
			break;
		default:
			break;
		}

2、IChatCallback 去掉onChatToPersion，发送私聊的时候自行调用原有代码onChatToPersion和之前一致
3、发送产生变化，由于增加了消息id的参数，因此发送的参数修改为ChatMsg对象
   (1)发送公聊 chatWithPublic(text,rich,new OnTaskRet ret)变为chatWithPublic(ChatMsg msg ,new OnTaskRet ret)
   
    String msgId = UUID.randomUUID().toString();//消息id,即加上uuid即可
	ChatMsg msg = new ChatMsg(text,rich,ChatMsg.CHAT_MSG_TYPE_PUBLIC,msgId);//公聊消息msgId，text，rich都不为空才有效
    mRtSdk.chatWithPublic(msg,new OnTaskRet() {
				
				@Override
				public void onTaskRet(boolean ret, int arg1, String arg2) {
					//UserInfo self  onRoomJoin回调的UserInfo
					if(ret && self != null){
						onChatWithPublic(self.getId(),self.getName(), text, rich,msgId);//自己发送的公聊消息添加到列表，如果有其他处理方式，忽略。
					}
				}
			});
	(2)发送私聊 chatWithPersion(String text, String rich, long userId,OnTaskRet ret)变为chatWithPersion(ChatMsg msg,OnTaskRet ret)
	
	String msgId = UUID.randomUUID().toString();//消息id,即加上uuid即可
	ChatMsg msg = new ChatMsg(text,rich,ChatMsg.CHAT_MSG_TYPE_PRIVATE,msgId);
    msg.setReceiverId(userId);//接收人的id
	//私聊消息msgId，text，rich都不为空且接收人id正确才有效

	mRtSdk.chatWithPersion(msg,new OnTaskRet() {
				
				@Override
				public void onTaskRet(boolean ret, int arg1, String arg2) {
					if(ret){
						onChatToPersion(userId, text, rich,msgId);//自己发送的私聊消息添加到列表，如果有其他处理方式，忽略。
					}
				}
			});
			
4、IChatCallback增加了聊天审核onChatCensor(long userId, String msgId);
  聊天审核使用，如果userId不等于0，删除userId的所有聊天消息，如果msgid不为空，删除msgId这条消息，一次调用只有一个参数有效

5、动态库文件增加了libucrtp.so(每一种架构都分别增加armeabi、armeabi-v7a、arm64-v8a、x86)
6、IRoomCallback增加onSettingSet(String key,byte[] value)//空实现即可

  
FastSDK
1、发布（直播）增加横屏模式  GSFastConfig.setPublishScreenMode(int publishScreenMode)
   参数取值定义在GSFastConfig中（例如横屏发布GSFastConfig.setPublishScreenMode(GSFastConfig.PUB_SCREEN_MODE_PORTRAIT)）
   /**
	 * 竖屏发布
	 */
	public static final int PUB_SCREEN_MODE_PORTRAIT = 0;
	/**
	 * 横屏发布
	 */
	public static final int PUB_SCREEN_MODE_LANDSCAPE = 1;
	
2、发布（直播）增加软、硬编码设置GSFastConfig.setHardEncode(boolean hardEncode);true 硬编码/ false 软编码

3、发布（直播）增加标清、高清设置GSFastConfig.setPubQuality(int pubQuality)
   参数取值定义在GSFastConfig中（例如GSFastConfig.setPubQuality(GSFastConfig.PUB_QUALITY_SD)）
   /**
	 * 高清
	 */
	public static final int PUB_QUALITY_HD = 0;
	
	/**
	 * 标清
	 */
	public static final int PUB_QUALITY_SD = 1;
	
4、增加打赏固定金额的配置setFixedMoneyArray(int[] fixedMoneyArray)
   其中单位为分，最多设置6个值 new int[]{10,20,30,40,50,60} 分别表示1-6角

   
   
VodSDK 点播
1、OnVodPlayListener增加聊天审核接口onChatCensor(String type, String id) 
   type:
   OnVodPlayListener.CHATCENSOR_MSG  //msg类型 删除对应id(msgId)的聊天消息
   OnVodPlayListener.CHATCENSOR_USER //user类型，删除id(userId)的所有聊天记录

2017/7/5
Player SDK 直播
1、统一userinfo，sdk更新后修改import com.gensee.entity.UserInfo  为com.gensee.routine.UserInfo即可
   
2017.07.15
doc 修改，适用于所有sdk
1、OnDocViewEventListener 的包名由原来的com.gensee.pdu.GSDocView.OnDocViewEventListener变为com.gensee.doc.OnDocViewEventListener
2、OnDocViewEventListener 回调函数中的参数GSDocView变为IGSDociew

2017.08.03
RtSDK 直播
1、修改初始化参数的userData字段，编码。外部调用（传递和取userInfo.getUserData() ）不变

Player SDK
1、修改初始化参数的userData字段，编码。外部调用（传递和取userInfo.getUserData() ）不变


2017.8.5-17
common 
1、视频渲染问题   
2、文档 swf 渲染保护
3、文档标注空指针、tostring问题
4、聊天、问答添加消息遇listener空指针问题
5、抽象adapter 下标保护

Player SDK OnPlayListener 增加了onVideoDataNotify()回调，内部接口之间使用，app空实现。

2017.9.25
Vod SDK
1、修改某些点播seek之后会反复跳跃问题
2、修改某些点播播放出错问题


2017.12.1
common
1、部分文档显示有网格问题处理

2018.1.30 
所有sdk
1、修改文档标注小于3像素的自由笔以3像素绘制

2018.4.8
所有sdk
1、修改文档模块部分文档中表格内内容显示不全的问题
2、修改fastsdk 竖屏全屏观看只能加入一次的问题
3、修改player sdk GSQaview"只看我的聊天"为只看我的问答


2018.5.20
Player sdk
1、增加修改加入直播后修改用户名的接口player.reName(String newName,OnTaskRet ret)
2、广播消息回调OnPlayListener.onPublicMsg的参数变更为 BroadCastMsg msg
        String content = msg.getContent();//广播消息内容
		long time = msg.getTime();//基于1970的秒数，直接fomat为指定格式
		String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH).format(new Date(time*1000));


2018.6.15
RtSDK
1、增加勋章和点赞
2、增加勋章和点赞的禁用启用状态(onSettingSet)

2018.7.15
Player SDK 
1、增加敏感词过滤接口player.textFilter和OnSensitiveWordFilter
	ChatEditText editText = …;
	editText.setOnSensitiveWordFilter(new OnSensitiveWordFilter{
		public String onFilter(src){
			return player.textFilter(src);
		}
	});
2、历史聊天消息增加发送时间，单位为毫秒：chatMsg.getTimeStamp()


2018.8.1
VodSDK 
修复极个别点播下载后拖动到某位置时候停止播放（视频不连续问题）

2018.12.3
PlayerSDK
1、修改相同用户id历史聊天记录不包含自己的问题
2、增加后台参加者私聊的功能通知 (OnChatListener  onStuPriChat)
FastSDK
1、增加点播播放器（对界面有要求的仍然需要自行实现播放界面）
2、直播中画中画模式下增加小窗口的关闭按钮
3、修改相同用户id历史聊天记录不包含自己的问题
4、增加后台参加者私聊的功能通知 (OnChatListener  onStuPriChat)
RtSDK
1、增加了小班课勋章和点赞的接口和回调
   （1）IMedalPraiseCallback：
    void onPraiseInfo(int result,String praiseType,PraiseUserInfo userinfo);   勋章或点赞通知
    void onPraiseTotal(int result,String praiseType,int total);                取获得的勋章或点赞总数
    void onPraiseRecvList(int result,String praiseType,PraiseInfo[] praises);  勋章或点赞排行榜
    void onPraiseNotify(String praiseType,  int time,PraiseUserInfo senderInfo,PraiseUserInfo receiverInfo,String comment);勋章或点赞变更通知，操作后的变化
   （2）RtSdk
   initMedalPraise(IMedalPraiseCallback callback,int defMedal,int defFavour)  加入成功后需要勋章点赞功能的情况下，初始化勋章或点赞
   sendPraise(String praiseType, long toUserId,	String toUserName, String comment, OnTaskRet taskRet)   发送勋章或给人点赞
	getPraiseTotal(String praiseType, OnTaskRet taskRet)  获取勋章或点赞总数
	getPraiseRecvList(String praiseType, int maxUser,OnTaskRet taskRet)获取点赞或勋章的排行榜

