概述

双向语音API提供了完整的语音管理功能,通过在应用中接入双向语音API,能够快捷地实现语音会议。 本文档旨在说明双向语音API 基本接口的使用以及注意事项,具体的接口定义请参照Java Doc。

双向语音API 适用于Android2.1 及以上操作系统的设备。

接入双向语音API

1. 申请APP KEY

在双向语音管理后台创建一款应用,您将获得与您应用相关联的唯一标识。

2. 向工程导入双向语音API

下载双向语音API 后解压至本地目录。将其中的libs文件中的内容夹拷贝到您的工程的libs目录下,如果您的工程没有libs文件夹,需要先创建一个libs文件夹。

在Eclipse中(其他开发工具参阅其自带说明)会自动将libs目录作为工程的库引用进去。

3. 配置AndroidManifest.xml 文件

应用需要的权限用途
INTERNET使用网络
RECORD_AUDIO允许程序进行语音录制的权限
WAKE_LOCK允许程序不让系统休眠
WRITE_EXTERNAL_STORAGE允许程序写SD卡
MODIFY_AUDIO_SETTINGS修改语音设置

Anroid的SDK 版本:

android:minSdkVersion="3"
android:targetSdkVersion="8"

要启动的Service:

com.gotye.service.AiLiaoService

示例代码:

4. 创建双向语音API实例并初始化环境

为了保证双向语音API 正常运行,并且第一时间被初始化,开发者需要在自定义的Application 的onCreate 方法中调用以下方法:

//初始化API,放在application中,保证第一次就启动
VoiChannelAPI api = VoiChannelAPI.getInstance();
api.init(Context, "您在双向语音管理后台申请的APP KEY");

建议初始化放在Application 的onCreate 方法中调用,避免以下不必要的错误。

注意1:初始化是API 开始工作的关键,不进行初始化就对其它接口进行调用,会有引发程序崩溃。请开发者一定注意。

功能说明

1. 注册或取消回调

双向语音API 的回调接口为VoiChannelAPIListener。 开发者应实现回调接口VoiChannelAPIListener 如Listener。

Listener listener = new Listener();
api.addListener(listener);

在不需要监听回调事件的时候,移除回调:

api.removeListener(listener);

注意1:务必在不使用回调后删除回调,不删除会导致回调过多,并且多次调用而出现一些不必要的问题。

2. 双向语音API异常处理

双向语音API许多请求都是通过回调通知上层,当用户操作失败,或出现网络异常时,本地将会收到一个onError的回调,其参数errorCode的值对应了不同的错误,详细的值请参见Java Doc 中的ErrorType 枚举说明。

3. 加入和退出频道

加入频道:

api.joinChannel(channelID);//channelID 为频道的ID 号

对应回调有:

onJoinChannel:登陆频道成功
onGetChannelMember:频道所有成员(自己除外)的详细信息
notifyChannelMemberTypes:频道所有成员的类型信息
notifyChannelTalkMode:频道的当前发言模式

频道其他成员回调有:

onGetChannelMember:刚进频道成员的详细信息
notifyChannelMemberTypes:频道所有成员的类型信息

退出当前频道:

api.exitChannel();

对应回调为:

onExitChannel:退出频道成功

频道其他成员回调为:

onRemoveChannelMember:收到其他成员刚退出的通知

注意1:退出频道将会停止说话,恢复麦克风(只针对被别人禁用的)。

4. 开始和停止说话

开始说话:

api.startTalking();

开始说话需满足的前提:

1 自己没被禁言。
2 自己麦克风未处于禁用状态。
3 当频道处于管理员发言模式时,自己必须是管理员或会长,当频道处于自由发言模式时,则对成员类型无要求。

对应回调:

onStartTalking:收到自己说话的通知

频道其他成员收到的回调:

onStartTalking:收到频道成员说话的通知(自己麦克风和扬声器未处于禁用状态)

停止说话:

api.stopTalking();

对应回调:

onStopTalking:收到停止说话的通知(自己之前处于能说话状态)

频道其他成员收到的回调:

onStopTalking:收到频道成员停止说话的通知(自己麦克风和扬声器未处于禁用状态且频道成员之前处于能说话状态)

5. 禁用和恢复本地的麦克风和扬声器

禁用本地的麦克风和扬声器:

api.mute();

对应回调有:

onMuteStateChanged:收到自己禁用的通知

恢复本地的麦克风和扬声器:

api.restore();

对应回调有:

onMuteStateChanged:收到自己禁用的通知

6. 禁言和取消禁言

禁言频道成员:

api.silence(userID);

对应回调有:

onSilencedStateChanged:收到用户被禁用的通知

频道其他成员回调为:

onSilencedStateChanged:收到用户被禁用的通知

取消禁言频道成员:

api.unsilence(userID);

对应回调有:

onSilencedStateChanged:收到用户被禁用的通知

频道其他成员回调为:

onSilencedStateChanged:收到用户被禁用的通知

注意1:普通用户没有此操作权限。

7. 提升和取消管理员

提升管理员和取消管理员:

api.elevate(userID);//提升管理员
api.demote(userID);//取消管理员

提升管理员和取消管理员的回调相同如下:

对应回调有:

notifyChannelMemberTypes:频道所有成员的类型信息
notifyChannelTalkMode:频道的当前发言模式

频道其他成员回调有:

notifyChannelTalkMode:频道的当前发言模式
notifyChannelMemberTypes:频道所有成员的类型信息

注意1:普通用户没有此操作权限。

8. 设置频道发言模式

发言模式分为管理员发言模式和自由发言模式:

api.setChannelTalkMode(TalkMode.AdministratorOnly);//管理员发言模式
api.setChannelTalkMode(TalkMode.Freedom);//自由发言模式

对应回调有:

notifyChannelMemberTypes:频道所有成员的类型信息
notifyChannelTalkMode:频道的当前发言模式

频道其他成员回调有:

notifyChannelTalkMode:频道的当前发言模式
notifyChannelMemberTypes:频道所有成员的类型信息

注意1:普通用户没有此操作权限。

9. 退出

退出语音服务器请调用以下代码:

api.exit();

对应回调为onExit 方法。

注意1:退出语音服务器,将恢复app 最初状态。

Q&A

1. 如何确定我的集成是正确的?

解答:集成后请务必进行必要的真机测试,使用双向语音API能够登录成功,发送登录频道消息。如果程序能正常接收发送语音则表示集成成功。

返回顶部