文档章节

Android移动端音视频的快速开发教程(六)

ilscott
 ilscott
发布于 2012/12/14 00:00
字数 2856
阅读 160
收藏 0

4

函数说明
4.1.
初始化与资源释放
4.1.1.
初始化SDK
INT InitSDK(INT osver, INT flags)
功能:初始化SDK
返回值:0表示成功,否则为出错代码
参数:
osver Android平台API版本,系统常量:android.os.Build.VERSION.SDK_INT
flags 功能模式组合,默认为0,参考WIN32平台SDK的InitSDK的参数dwFuncMode定义
备注:
功能模式组合可根据实际的需求灵活定义,如果在后续的方法调用中失败,则很有可能是某一项功能没有被定义,默认为0,SDK内部会自动设置常用的标志。
该方法必须第一个被调用(SetSDKOptionString方法除外),否则后续的其它方法调用将会返回没有初始化错误。
4.1.2.
设置基本事件通知接口
public void SetBaseEvent(AnyChatBaseEvent e);
功能:只有设置基本事件通知接口后,AnyChat内核产生的异步事件才能通知到Activity,并触发Activity中对应的接口方法。
返回值:无
参数:
E 实现AnyChatBaseEvent接口的对象
备注:
如有多个Activity需要响应事件,则每个Activity都必须实现对应的接口,
第 23 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
并调用该方法向AnyChat内核注册该接口,只有当前活动的Activity才能接收到异步消息,触发接口方法。
4.1.3.
设置状态变化事件接口
public void SetStateChgEvent(AnyChatStateChgEvent e);
功能:只有设置状态变化事件通知接口后,AnyChat内核产生的状态变化事件才能通知到Activity,并触发Activity中对应的接口方法。
返回值:无
参数:
E 实现AnyChatStateChgEvent接口的对象
备注:
如有多个Activity需要响应事件,则每个Activity都必须实现对应的接口,并调用该方法向AnyChat内核注册该接口,只有当前活动的Activity才能接收到异步消息,触发接口方法。
4.1.4.
设置私聊消息通知接口
public void SetPrivateChatEvent(AnyChatPrivateChatEvent e);
功能:只有设置私聊事件通知接口后,AnyChat内核产生的私聊事件才能通知到Activity,并触发Activity中对应的接口方法。
返回值:无
参数:
E 实现AnyChatPrivateChatEvent接口的对象
备注:
如有多个Activity需要响应事件,则每个Activity都必须实现对应的接口,并调用该方法向AnyChat内核注册该接口,只有当前活动的Activity才能接收到异步消息,触发接口方法。
第 24 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
4.1.5.
设置文字聊天消息接口
public void SetTextMessageEvent(AnyChatTextMsgEvent e);
功能:只有设置文字聊天消息接口后,AnyChat内核产生的文字聊天事件才能通知到Activity,并触发Activity中对应的接口方法。
返回值:无
参数:
E 实现AnyChatTextMsgEvent接口的对象
备注:
如有多个Activity需要响应事件,则每个Activity都必须实现对应的接口,并调用该方法向AnyChat内核注册该接口,只有当前活动的Activity才能接收到异步消息,触发接口方法。
4.1.6.
设置数据传输消息接口
public void SetTransDataEvent(AnyChatTransDataEvent e);
功能:只有设置数据传输消息接口后,AnyChat内核产生的数据传输事件才能通知到Activity,并触发Activity中对应的接口方法。
返回值:无
参数:
E 实现AnyChatTransDataEvent接口的对象
备注:
如有多个Activity需要响应事件,则每个Activity都必须实现对应的接口,并调用该方法向AnyChat内核注册该接口,只有当前活动的Activity才能接收到异步消息,触发接口方法。
数据传输接口内部实现了缓冲区传输、扩展缓冲区传输、文件传输等传输数据的异步事件通知接口。
第 25 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
4.1.7.
释放SDK资源
INT Release(VOID);
功能:释放SDK占用的所有资源
返回值:0表示成功,否则为出错代码
参数:
无。
备注:
该方法必须最后一个被调用,调用该方法后,SDK内部所占用的资源将被释放,如果在其后面再调用其它的方法,将会返回没有初始化的错误。
该方法通常在上层应用退出系统时被调用,即最后一个Activity销毁时调用,而中间Activity销毁时不需要,也不能调用该方法。
4.2.
登录流程
4.2.1.
设置服务器认证密码
INT SetServerAuthPass(STRING Password);
功能:设置服务器连接认证密码,确保SDK能正常连接到服务器。
返回值:0表示成功,否则为出错代码
参数:
lpPassword 认证密码(大小写敏感);
备注:
为了防止未授权SDK连接服务器,在服务器配置文件(AnyChatCoreServer.ini)中可设置“SDKAuthPass”,如果该配置项被设置,当SDK连接服务器时,会将该方法所传入的密码加密后传输到服务器,服务器再比较是否合法,如果密码不正确,则连接将被断开。如果该配置项未被设置(配置文件默认),则无论该方法是否被调用,SDK均可正常连接到服务器。 第 26 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
4.2.2.
连接服务器
INT Connect(STRING ServerAddr, INT Port);
功能:用于与服务器建立连接。
返回值:0表示成功,否则为出错代码
参数:
lpServerAddr 服务器IP地址,或是网站域名(URL)地址;
dwPort 服务端口号(默认为8906)
备注:
返回值为0并不表示连接服务器成功,仅表示SDK已成功收到连接服务器的指令,如果连接成功,或是失败,都将会通过相应的接口通知上层应用,这里是一个异步的过程。
4.2.3.
登录系统
INT Login(STRING UserName, STRING Password);
功能:登录服务器,请求身份认证。
返回值:0表示成功,否则为出错代码
参数:
lpUserName 注册用户名;
lpPassword 登录密码(为空表示游客);
备注:
该方法可以连接系统之后立即调用,而不用关心连接系统是否成功,当SDK连接系统成功之后,如果之前调用过该方法,则SDK将会自动向服务器发出登录系统的申请。
返回值为0并不表示登录服务器成功,仅表示SDK已成功收到登录服务器的指令,如果登录成功,或是失败,都将会通过相应的接口通知上层应用,这里是一个异步的过程。
如果服务器配置了“SDK Filter Plus”插件,则客户端调用该方法后,将会触发其API接口:BRFP_VerifyUser,用户名、密码参数将会作为参数传递给
第 27 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
该API函数,由“SDK Filter Plus”完成用户的身份验证工作,服务器根据该API接口的返回值来判定是否通过身份验证,详细信息可参考文档《AnyChat SDK Filter Plus开发指南》。
如果在服务器端使用“AnyChat Server SDK”开发了业务层服务器,则客户端调用该方法后,将会触发业务层服务器的回调函数“BRAS_VerifyUser_CallBack”,由业务层服务器完成用户的身份验证工作,服务器根据回调函数的返回值来判定是否通过身份验证,详细信息可参考文档《AnyChat Server SDK 开发指南》。
4.2.4.
进入房间(根据房间编号)
INT EnterRoom(INT Roomid, STRING RoomPass);
功能:根据房间编号进入房间
返回值:0表示成功,否则为出错代码
参数:
dwRoomid 房间编号,系统唯一;
lpRoomPass 房间密码(当房间需要密码时有效,如果没有可为空);
备注:
该方法可以登录系统之后立即调用,而不用关心登录系统是否成功,当SDK登录系统成功之后,如果之前调用过该方法,则SDK将会自动向服务器发出进入房间的申请。
返回值为0并不表示进入房间成功,仅表示SDK已成功收到进入房间的指令,不论成功,或是失败,都将会通过相应的接口通知上层应用,这里是一个异步的过程。
用户必须进入一个房间,否则无法进行相关的操作,后续用户所有的操作都是在房间内操作,针对游戏,房间可以理解为游戏桌(一桌游戏对应一个房间),针对视频会议,房间可以理解为会议室。
如果服务器配置了“SDK Filter Plus”插件,则客户端调用该方法后,将会触发其API接口:BRFP_PrepareEnterRoom,用户ID、房间ID、房间密码将会
第 28 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
作为参数传递给该API函数,由“SDK Filter Plus”完成用户进入房间的验证工作,服务器根据该API接口的返回值来判定是否允许进入房间,详细信息可参考文档《AnyChat SDK Filter Plus开发指南》。
如果在服务器端使用“AnyChat Server SDK”开发了业务层服务器,则客户端调用该方法后,将会触发业务层服务器的回调函数“BRAS_PrepareEnterRoom_CallBack”,由业务层服务器完成用户进入房间的验证工作,服务器根据该API接口的返回值来判定是否允许进入房间,详细信息可参考文档《AnyChat Server SDK 开发指南》。
4.2.5.
进入房间(根据房间名称)
INT EnterRoomEx(STRING RoomName, STRING RoomPass)
功能:根据房间名称进入房间
返回值:0表示成功,否则为出错代码
参数:
lpRoomName 房间名称;
lpRoomPass 房间密码(当房间需要密码时有效,如果没有可为空);
备注:
该方法与“EnterRoom”功能相同,区别在于房间的标识不同,其中“EnterRoom”是用房间ID进入房间,而该方法是用房间名称进入房间,如果房间不存在,而且系统配置为自动创建房间时,将会由系统分配一个唯一的房间编号,通过基本事件接口(AnyChatBaseEvent)返回给上层应用,上层应用可以通过方法“GetRoomName”来获取房间名称。
4.2.6.
离开房间
INT LeaveRoom(INT Roomid);
功能:离开房间。
返回值:0表示成功,否则为出错代码
第 29 页 共 51 页
AnyChat for Android SDK 开发手册 佰锐科技 版权所有
参数:
Roomid 房间编号,为-1表示退出当前房间
备注:
在用户变换房间之前,需要调用该方法离开房间,然后才能进入新的房间。
4.2.7.
注销系统
INT Logout(VOID);
功能:将用户从系统中注销。
返回值:0表示成功,否则为出错代码
参数:

备注:
在切换用户(如用户换用其它的用户名登录系统)时需要先调用该方法,或是在退出系统前需要调用该方法

© 著作权归作者所有

ilscott
粉丝 11
博文 32
码字总数 44422
作品 0
广州
私信 提问
新手入门一篇就够:从零开发移动端IM

一、前言 IM发展至今,已是非常重要的互联网应用形态之一,尤其移动互联网时代,它正以无与论比的优势降低了沟通成本和沟通代价,对各种应用形态产生了深远影响。 做为IM开发者或即将成为IM开...

JackJiang-
2016/08/03
898
4
如何选择即时通讯应用的数据传输格式

前言 即时通讯应用(包括IM聊天应用、实时消息推送应用等)开发的前期技术选型时,关于数据传输格式的选择,在即时通讯开发者同行的眼里,是个极富争议话题。 精略分析一下,大概的原因在于:...

JackJiang-
2016/08/04
575
1
移动端IM开发需要面对的技术问题

1、前言 这两年多一直从事网易云信 iOS 端 IM SDK的开发,期间不断有兄弟部门的同事和合作伙伴过来问各种技术细节,干脆统一介绍下一个IM APP的方方面面,包括技术选型(包括通讯方式,网络连...

JackJiang-
2016/08/09
254
0
微信多媒体团队梁俊斌访谈:聊一聊我所了解的音视频技术

本文内容由“微信多媒体团队”整理发布。 1、引言 广州TIT创意园,这里是腾讯在广州的研发团队所在地,LiveVideoStack采访了微信多媒体内核中心音视频算法高级工程师梁俊斌(Denny)。从华为...

JackJiang2011
2018/07/31
0
0
微信多媒体团队梁俊斌访谈:聊一聊我所了解的音视频技术

本文内容由“微信多媒体团队”整理发布。 1、引言 广州TIT创意园,这里是腾讯在广州的研发团队所在地,LiveVideoStack采访了微信多媒体内核中心音视频算法高级工程师梁俊斌(Denny)。从华为...

首席大胸器
2018/07/31
189
0

没有更多内容

加载失败,请刷新页面

加载更多

怎样在磁盘上查找MySQL表的大小?这里有答案

导读 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎...

问题终结者
18分钟前
5
0
jQuery load() 方法实现加载远程数据

jQuery load() 方法是简单但强大的 AJAX 方法。load() 方法从服务器加载数据,并把返回的数据放入被选元素中。 语法: $(selector).load(URL,data,callback);必需的 URL 参数规定您希望加载的...

前端老手
19分钟前
3
0
Spring Boot缓存实战 Redis 设置有效时间和自动刷新缓存-2

问题 上一篇Spring Boot Cache + redis 设置有效时间和自动刷新缓存,时间支持在配置文件中配置,说了一种时间方式,直接扩展注解的Value值,如: @Override@Cacheable(value = "people#${s...

xiaolyuh
27分钟前
9
0
怎样在磁盘上查找MySQL表的大小?这里有答案

我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应该在 INFORMATION_SCHEMA.TABLES 中提供这些信息吗?没那么简单! 我想知道 MySQL 表在磁盘上占用多少空间,但看起来很琐碎。不应...

Linux就该这么学
52分钟前
5
0
Redis

一、Redis支持的几种数据类型:字符串、List、SET、HASH、ZSET 二、Redis的缓存技术主要是为了降低关系数据库的负载并减少网站成本 三、在Redis里面,被MULTI命令和EXEC命令包围的所有命令会...

BobwithB
54分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部