Android语音SDK接入说明

1.文档说明

1.1.功能描述

此文档是掌趣语音SDK 接入说明。

为了游戏进行中进行语音聊天,进行语音聊天的统一上传下载,识别中文。

基本流程:

1.2.阅读对象

接入掌趣的游戏及应用开发者,包括游戏客户端工程师及产品运营人员。

1.3.名词解释

设备 :玩家用于安装运行游戏和应用的手机,平板,电脑等硬件设施;

2.开发环境搭建

2.1.lib库的引入

直接从<资源,LIB库和配置文件>中复制所有lib库到游戏工程的相应目录,包含libs及assets。
注意:
1.由MIS平台获取的ourpalm.cfg请放到APK的assets文件夹的根目录。
2.libs里面的so注意CPU架构

2.2.AndroidManifest.xml的配置

请游戏直接从<资源,LIB库和配置文件>中AndroidManifest.xml中复制当前渠道所需配置的内容,内有详细的注释说明。如不清楚请咨询掌趣SDK技术人员。

掌趣语音SDK所需要的权限:

  1. <uses-permission android:name="android.permission.RECORD_AUDIO" />
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  4. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  5. <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
  6. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  7. <uses-permission android:name="android.permission.WRITE_SETTINGS" />

2.3.备注说明

  1. 导入过程中可能因为重复引用LIB库导致编译报错,在项目工程中移除重复的LIB库即可。

3.接入流程

3.1.初始化接口(客户端调用,必须)

功能说明 :

1、如果接入掌趣base sdk,需要先调用base sdk初始化接口Ourpalm_Init后再调用本接口

接口定义 :

  1. Ourpalm_Voice.getInstance().init(Context context);

参数说明:

参数名称 重要性 类型 说明
context 必传 Context 传入上下文

接口示例 :

  1. Ourpalm_Voice.getInstance().init(Context);

3.2.设置游戏信息(客户端调用,必须)

功能说明 :

成功登陆游戏并进入游戏后,游戏客户端必须调用此接口设置用户的角色信息,角色信息在其他统计功能接口中需要用到。

接口定义 :

  1. public void setGameInfo(Ourpalm_GameInfoCallBack callback)

参数说明 :

参数名称 重要性 类型 说明
callback 必选 Ourpalm_GameInfoCallBack 游戏客户端必须实现这个游戏信息回调类,最好返回动态的游戏信息值(变量),便于统计实时的游戏信息。

接口示例:

  1. Ourpalm_Voice.getInstance().getInstance().setGameInfo(newOurpalm_GameInfoCallBack() {
  2. @Override
  3. public String getGameServerId() {
  4. //实时返回游戏服务器ID 变量返回,如没有,返回” ”
  5. return "1";
  6. }
  7. @Override
  8. public String getGameRoleVipLevel() {
  9. //实时返回游戏角色VIP等级 变量返回,如没有,返回” ”
  10. return "2";
  11. }
  12. @Override
  13. public String getGameRoleName() {
  14. //实时返回游戏角色名称 变量返回,如没有,返回” ”
  15. return "测试角色";
  16. }
  17. @Override
  18. public String getGameRoleLevel() {
  19. //实时返回游戏角色等级 变量返回,如没有,返回” ”
  20. return "100";
  21. }
  22. @Override
  23. public String getGameRoleId() {
  24. //实时返回游戏角色ID 变量返回,如没有,返回””
  25. return "987654321";
  26. }
  27. });

3.3.录音并上传接口(客户端调用,必须)

功能说明:

进行录音,识别文字,并上传服务器接口

接口定义:

  1. Ourpalm_Voice.getInstance().OupalmStartRecord(OurplamActivity.this,”1”,true,new OurpalmSendVoiceListener() {
  2. @Override
  3. public void result(String code,String result) {
  4. Logs.i("info", "code="+code+ " result="+result);
  5. try {
  6. JSONObject mObject = new JSONObject(result);
  7. mObject.getString("voiceToWord"),
  8. mObject.getString("voiceId"));
  9. } catch (Exception e) {
  10. e.printStackTrace();
  11. }
  12. }
  13. });

返回参数说明:

(1)上传成功返回的参数格式为:

code为0

result为:

{"voiceToWord":"测试","voiceId":"11149216294512701","localVoiceId":"31","status":"0"}

status : 为状态码。0 为成功

voiceToWord : 语音文件识别的后的文字

voiceId : 语音上传成功后掌趣语音文件Id

localVoiceId:游戏上传的当前聊天列表的Id ,为了和voiceId 做对应。

(2)如果由于网络原因上传语音文件失败,会返回

code 为1

result为

{"voiceToWord":"测试",localVoiceId":"31","status":"1"}

需要继续调用重新发送接口,下面会说明

(3)如果语音文件为生成,或者语音引擎的问题,未生成语音文件

code 为2

result返回""字符串请游戏做好判断。

3.4.重新上传接口(客户端调用,必须)

功能说明:

由于网络等原因上传失败时,游戏根据返回的参数,进行重新发送语音文件

接口定义:

  1. /**
  2. \* 重复发送录音
  3. \* @param localVoiceId
  4. \* @param word
  5. \* @param sendListener
  6. */
  7. public void OurpalmSendVoice(Context context,String localVoiceId,String word,OurpalmSendVoiceListener sendListener)

参数说明:

参数名称 重要性 类型 说明
Context 必须 context 当前上下文
localVoiceId 必须 游戏的聊天列表Id 游戏的列表Id
word 必须 String 返回给游戏语音识别的文字数据
OurpalmSendVoiceListener 必须 OurpalmSendVoiceListener 上传的回调

接口示例:

  1. Ourpalm_Voice.getInstance().OurpalmSendVoice(OurplamActivity.this,
  2. localVoiceId,word ,new OurpalmSendVoiceListener() {
  3. @Override
  4. public void result(String code,String result) {
  5. Logs.i("info", "code="+code+ " result="+result);
  6. try {
  7. JSONObject mObject = new JSONObject(result);
  8. mObject.getString(&quot;voiceToWord&quot;),
  9. mObject.getString(&quot;voiceId&quot;));
  10. } catch (Exception e) {
  11. e.printStackTrace();
  12. }
  13. }
  14. });

返回参数说明:

(1)上传成功返回的参数格式为:

code为0

result为:

{"voiceToWord":"测试","voiceId":"11149216294512701","localVoiceId":"31","status":"0"}

status : 为状态码。0 为成功

voiceToWord : 语音文件识别的后的文字

voiceId : 语音上传成功后掌趣语音文件Id

localVoiceId:游戏上传的当前聊天列表的Id ,为了和voiceId 做对应。

(2)如果由于网络原因上传语音文件失败,会返回

code 为1

result为:

{"voiceToWord":"测试",localVoiceId":"31","status":"1"}

需要继续调用重新发送接口,下面会说明

(3)如果语音文件为生成,或者语音引擎的问题,未生成语音文件

code为2

result返回""字符串请游戏做好判断。

3.5.播放语音接口(客户端调用,必须)

功能说明 :

游戏传入返回的掌趣语音Id 进行语音文件播放

接口定义:

  1. /**
  2. \* 播放录音
  3. \* @param voiceId
  4. \*@param playListener
  5. */
  6. public void OupalmPlayVocie(Context context,String voiceId,OurpalmVoicePlayListener playListener)

参数说明:

参数名称 重要性 类型 说明
Context 必须 context 当前上下文
voiceId 必须 掌趣语音Id 上传成功后返回的服务器Id
OurpalmVoicePlayListener 必须 OurpalmVoicePlayListener 播放语音的回调

接口示例:

  1. Ourpalm_Voice.getInstance().OupalmPlayVocie(Context,voiceId,new OurpalmVoicePlayListener() {
  2. @Override
  3. public void PlayError() {
  4. Log.i("info","PlayError");
  5. }
  6. @Override
  7. public void PlayEnd() {
  8. Log.i("info","PlayEnd");
  9. });

返回参数说明:

如果语音播放完毕,会自动回调PlayEnd(),游戏可调用播放接口,进行下一段语音的播放。

用于游戏当前频道自动播放语音的场景。

当然语音文件不存在或者语音格式错误会回调PlayError()

3.6.暂停播放语音接口(客户端调用,必须)

功能说明:

暂停语音文件播放,这个接口一般不会用到,一般语音播放完毕后会自动停止并回调上面的语音播放结束回调

接口定义:

  1. public void OupalmStopPlayVoice();

接口示例:

  1. Ourpalm_Voice.getInstance().OupalmStopPlayVoice();

3.7.停止录音接口(客户端调用,必须)

功能说明:

停止当前录音上传接口,如果语音文件生成成功,会自动回调OurpalmSendVoiceListener的回调,一般录音说话结束后,SDK会自动识别停止录音并回调。建议这个接口游戏使用自己的录音UI界面时使用。

接口定义:

  1. public void OupalmStopRecord()

接口示例 :

  1. Ourpalm_Voice.getInstance().OupalmStopRecord();

3.8.释放资源(客户端调用,必须)

功能说明 :

游戏退出时调用,释放资源,防止内存泄漏。

接口定义:

  1. Ourpalm_Voice.getInstance().Destory()