Assets->Import Package-> CustomPackage…直接导入LTgmeSDK.unitypackage
将开发工具包中 Plugins 文件夹中的文件复制在 Unity 工程>Assets>Plugins 文件夹中
将开发工具包中 Scripts (LTBaseSDK、GMESDK)文件夹中的文件复制在 Unity 工程中存放代码的文件夹中
1.执行菜单栏的脚本文件
2.在File-Build Setting-player settings-other settings里面自行设置
使用实时语音和离线语音时,代码需要继承LTGmeListener并由于在LTGmeListener里做了相关的事件监听和生命周期的调用。 则需要研发override 相关回调方法并实现游戏中相应的处理。
重要的生命周期需要override 并且调用base方法示例如下:
public override void Awake()
{
base.Awake();
}
public override void Start()
{
base.Start();
}
public override void Update()
{
base.Update();
}
public override void OnApplicationFocus(bool focus)
{
base.OnApplicationFocus(focus);
}
public override void OnDestroy()
{
base.OnDestroy();
}
具体用法可以参考demo !
不管实时语音还是离线语音都需要用到核心接口
例如使用了实时语音服务,同时也需要使用语音消息服务,只需要调用一次 Init 初始化接口
在使用 GME 的任何接口之前,都需要先调用 Init 接口。
public abstract int Init(string sdkAppID, string openID);
参数 | 类型 | 含义 |
---|---|---|
sdkAppId | string | 来自 腾讯云控制台 的 GME 服务提供的 AppID |
openID | string | openID 只支持 Int64 类型(转为 string 传入) |
LTGmeSDK.GetInstance().Init(appid,openid);
通过在 update 里面周期的调用 Poll 可以触发事件回调。Poll 是 GME 的消息泵,GME 需要周期性的调用 Poll 接口触发事件回调。如果没有调用 Poll ,将会导致整个 SDK 服务运行异常。如果脚本没有继承MonoBehaviour 需要使用提供的EnginePollHelper 文件进行周期性的调用。
public abstract int Poll();
void Update()
{
LTGmeSDK.GetInstance().Poll();
}
当系统发生 Pause 事件时,需要同时通知引擎进行 Pause。例如在应用退后台时候(OnApplicationPause, isPause=True),如果不需要后台播放房间内声音,请调用 Pause 接口暂停整个 GME 服务。
当系统发生 Resume 事件时,需要同时通知引擎进行 Resume。Resume 接口只恢复实时语音
public abstract int Pause()
public abstract int Resume()
private void OnApplicationFocus(bool focus)
{
Debug.Log(string.Format("OnApplicationFocus {0}", focus));
if (focus)
{
LTGmeSDK.GetInstance().Resume();
}
else
{
LTGmeSDK.GetInstance().Pause();
}
}
反初始化 SDK,进入未初始化状态。如果游戏业务侧账号与 openid 是绑定的,那切换游戏账号需要反初始化 GME,再用新的 openid 初始化
public abstract int Uninit()
LTGmeSDK.GetInstance().Uninit();
生成 AuthBuffer,用于相关功能的加密和鉴权
QAVAuthBuffer GenAuthBuffer(int appId, string roomId, string openId, string key)
参数 | 类型 | 含义 |
---|---|---|
appId | int | 来自腾讯云控制台的 AppID 号码。 |
roomId | string | 房间号,最大支持127字符。 |
openId | string | 用户标识。与 Init 时候的 openID 相同。 |
key | string | 来自腾讯云 控制台 的权限密钥。 |
byte[] authBuffer = LTGmeSDK.GetInstance().GetAuthBuffer(UserConfig.GetAppID(), sRoomID,UserConfig.GetUserID(), UserConfig.GetAuthKey());
用生成的鉴权信息进房,加入房间默认不打开麦克风及扬声器
EnterRoom(string roomId, int roomType, byte[] authBuffer)
参数 | 类型 | 含义 |
---|---|---|
roomId | string | 房间号,最大支持127字符 |
roomType | Int | 进房只需填 1流畅音质 进房后可以修改 |
authBuffer | Byte[] | 鉴权码 |
LTGmeSDK.GetInstance().EnterRoom(sRoomID, roomtype, authBuffer);
请使用 1:流畅音质 作为房间类型参数进入房间。非流畅音质进房会有错误提示,无法进房。进房后可以通过接口修改音质
public enum LTGMERoomType
{
ROOM_TYPE_FLUENCY = 1,//流畅音质
ROOM_TYPE_STANDARD = 2,//标准音质
ROOM_TYPE_HIGHQUALITY = 3,//高清音质
};
加入房间完成后会通过回调返回进房结果,监听进房结果事件后进行处理。如果回调为成功,即此时进房成功,开始进行计费
//callback
public abstract void onEnterRoomSuccess();
public abstract void onEnterRoomFailed(int err, string errInfo);
public override void onEnterRoomFailed(int err, string errInfo)
{
Debug.Log("onEnterRoomFailed err = "+ err +" errInfo = "+ errInfo);
}
public override void onEnterRoomSuccess()
{
Debug.Log("onEnterRoomSuccess");
}
错误码值 | 原因及建议方案 |
---|---|
7006 | 鉴权失败原因 |
• AppID 不存在或者错误 | |
• authbuff 鉴权错误 | |
• 鉴权过期 | |
• OpenId 不符合规范 | |
7007 | 已经在其它房间 |
1001 | 已经在进房过程中,然后又重复了此操作。建议在进房回调返回之前不要再调用进房接口 |
1003 | 已经进房了在房间中,又调用一次进房接口 |
1101 | 确保已经初始化 SDK,确保 OpenId 是否符合规则,或者确保在同一线程调用接口,以及确保 Poll 接口正常调用 |
通过调用此接口可以退出所在房间。这是一个异步接口,返回值为 AV_OK (0)的时候代表异步投递成功。
如果应用中有退房后立即进房的场景,在接口调用流程上,开发者无需要等待 ExitRoom 的回调 RoomExitComplete 通知,只需直接调用接口。
public void ExitRoom()
LTGmeSDK.GetInstance().ExitRoom();
public abstract void onExitRoomComplete();
public override void onExitRoomComplete()
{
Debug.Log("onExitRoomComplete");
}
通过调用此接口可以判断是否已经进入房间,返回值为 bool 类型。进房过程中调用无效果。
public bool IsRoomEntered()
LTGmeSDK.GetInstance().IsRoomEntered()
调用此接口快速切换实时语音房间。此接口在进房后调用。切换房间后,不重置设备,即如果在此房间已经是打开麦克风状态,在切换房间后也会是打开麦克风状态。
public int SwitchRoom(string targetRoomID, byte[] authBuffer)
参数 | 类型 | 含义 |
---|---|---|
targetRoomID | String | 将要进入的房间号 |
authBuffer | byte[] | 用将要进入的房间号生成的新鉴权 |
byte[] authBuffer = LTGmeSDK.GetInstance().GetAuthBuffer(UserConfig.GetAppID(), sRoomID, UserConfig.GetUserID(), UserConfig.GetAuthKey());
int ret = LTGmeSDK.GetInstance().SwitchRoom(sRoomID, authBuffer);
public abstract void onSwitchRoomSuccess();
public abstract void onSwitchRoomFailed(string error_info);
public override void onSwitchRoomFailed(string error_info)
{
Debug.Log("onSwitchRoomFailed info = "+ error_info);
}
public override void onSwitchRoomSuccess()
{
Debug.Log("onSwitchRoomSuccess ");
}
调用此接口进行跨房连麦,此接口在进房后调用。调用接口后,本端可以与目标房间的目标 OpenID 用户进行连麦交流。
场景示例
a 用户在 A 房间中,b 用户在 B 房间中,a 用户可以通过跨房接口与 b 进行通话,A 房间中的用户 c 说话,B 房间的 b 与 d 无法听到;A 房间中的用户 c 只能听到 A 房间的声音以及 B 房间中 b 的声音,B 房间其他人说话 c 无法听到。
/// <summary> 开启房间共享,与另外的房间中的 OpenID 进行连麦</summary>
public abstract int StartRoomSharing(string targetRoomID, string targetOpenID, byte[] authBuffer);
/// <summary> 结束已经开启的房间共享</summary>
public abstract int StopRoomSharing();
参数 | 类型 | 含义 |
---|---|---|
targetRoomID | String | 将要连麦的房间号 |
targetOpenID | String | 将要连麦的目标 OpenID |
authBuffer | byte[] | 保留标志位,只需填 NULL |
byte[] auth = null;
LTGmeSDK.GetInstance().StartRoomSharing(targetRoomID, targetOpenID, auth);
LTGmeSDK.GetInstance().StopRoomSharing();
此接口适用于获取房间中说话的人并在 UI 中展示,以及有人进入、退出语音房间的一个通知。
该事件在状态变化才通知,状态不变化的情况下不通知
public abstract void onEndPointEnter(string[] memberList);
public abstract void onEndPointExit(string[] memberList);
public abstract void onEndPointHasAudio(string[] memberList);
public abstract void onEndPointNoAudio(string[] memberList);
public override void onEndPointEnter(string[] memberList)
{
// 有成员进入房间,返回房间内所有的 openid
//throw new System.NotImplementedException();
RefreshMemberList(memberList,1);
}
public override void onEndPointExit(string[] memberList)
{
// 有成员退出房间,返回房间内所有的 openid
//throw new System.NotImplementedException();
RefreshMemberList(memberList,0);
}
public override void onEndPointHasAudio(string[] memberList)
{
//有成员发送音频包,返回房间内说话的所有的 openid
throw new System.NotImplementedException();
}
public override void onEndPointNoAudio(string[] memberList)
{
//有成员停止发送音频包,返回房间内停止说话的所有的 openid
throw new System.NotImplementedException();
}
将某个 ID 加入音频数据黑名单,即不接受某人的语音, 只对本端生效,不会影响其他端。返回值为 0 表示调用成功。例如 :A,B,C 都在同一个房间开麦说话:
• 如果 A 设置了 C 的黑名单, 则 A 只能听见 B 的声音。
• B 因为没有设置黑名单, 仍旧可以听见 A 和 C 的声音。
• C 同样因为没有设置黑名单, 可以听见 A 和 B 的声音。
此接口适用于在语音房间中将某用户禁言的场景。
public abstract int AddAudioBlackList(string openId);
参数 | 类型 | 含义 |
---|---|---|
openId | String | 需添加黑名单的用户 openid |
LTGmeSDK.GetInstance().AddAudioBlackList(targetOpenID);
将某个 Id 移除音频数据黑名单
public abstract int RemoveAudioBlackList(string openId);
参数 | 类型 | 含义 |
---|---|---|
openId | String | 需移除黑名单的用户 openid |
LTGmeSDK.GetInstance().RemoveAudioBlackList(targetOpenID);
此接口用来开启关闭麦克风。加入房间默认不打开麦克风及扬声器。
public abstract int EnableMic(bool isEnabled);
参数 | 类型 | 含义 |
---|---|---|
isEnabled | boolean | 如果需要打开麦克风,则传入的参数为 true,如果关闭麦克风,则参数为 false |
LTGmeSDK.GetInstance().EnableMic(value);
此接口用于获取麦克风状态,返回值0为关闭麦克风状态,返回值1为打开麦克风状态。
public abstract int GetMicState();
int state = LTGmeSDK.GetInstance().GetMicState();
此接口用来开启/关闭采集设备。加入房间默认不打开设备。
只能在进房后调用此接口,退房会自动关闭设备。
在移动端,打开采集设备通常会伴随权限申请,音量类型调整等操作。
public abstract int EnableAudioCaptureDevice (bool enabled);
参数 | 类型 | 含义 |
---|---|---|
isEnabled | bool | 如果需要打开采集设备,则传入的参数为 true,如果关闭采集设备,则参数为 false |
//打开采集设备
LTGmeSDK.GetInstance().EnableAudioCaptureDevice(true);
此接口用于采集设备状态获取。
public abstract bool IsAudioCaptureDeviceEnabled();
bool IsAudioCaptureDevice = LTGmeSDK.GetInstance().IsAudioCaptureDeviceEnabled();
此接口用于打开/关闭音频上行。如果采集设备已经打开,那么会发送采集到的音频数据。如果采集设备没有打开,那么仍旧无声。采集设备的打开关闭请参见接口 EnableAudioCaptureDevice。
public abstract int EnableAudioSend(bool isEnabled);
参数 | 类型 | 含义 |
---|---|---|
isEnabled | bool | 如果需要打开音频上行,则传入的参数为 true,如果关闭音频上行,则参数为 false |
LTGmeSDK.GetInstance().EnableAudioSend(true);
此接口用于音频上行状态获取。
public abstract bool IsAudioSendEnabled();
bool IsAudioSend = LTGmeSDK.GetInstance().IsAudioSendEnabled();
此接口用于获取麦克风实时音量,返回值为 int 类型。建议20ms获取一次。值域为0 - 100,通过此接口可以获取到麦克风采集到的实时音量情况。此接口不适用于语音消息服务。
public abstract int GetMicLevel();
LTGmeSDK.GetInstance().GetAudioMicLevel()
此接口用于获取自己音频上行实时音量,返回值为 int 类型,取值范围为0 - 100。
此接口不适用于语音消息服务。
public abstract int GetSendStreamLevel();
int Level = LTGmeSDK.GetInstance().GetSendStreamLevel();
此接口用于设置麦克风的音量。参数 volume 用于设置麦克风的音量,相当于对采集的声音做衰减或增益,当数值为0的时候表示静音,当数值为100的时候表示音量不增不减,默认数值为100。此接口不适用于语音消息服务。
public abstract int SetMicVolume(int volume);
参数 | 类型 | 含义 |
---|---|---|
volume | int | 设置音量,范围0 - 200 |
LTGmeSDK.GetInstance().SetAudioMicVolume(int.Parse(volume));
此接口用于获取麦克风的音量。返回值为一个int类型数值,返回值为101代表没调用过接口 SetMicVolume。此接口不适用于语音消息服务。
public abstract int GetMicVolume();
LTGmeSDK.GetInstance().GetAudioMicVolume()
此接口用于开启关闭扬声器。
public abstract int EnableSpeaker(bool isEnabled);
参数 | 类型 | 含义 |
---|---|---|
isEnabled | bool | 如果需要关闭扬声器,则传入的参数为 false,如果打开扬声器,则参数为 true |
LTGmeSDK.GetInstance().EnableSpeaker(value);
此接口用于扬声器状态获取。返回值0为关闭扬声器状态,返回值1为打开扬声器状态。
public abstract int GetSpeakerState();
int ret = LTGmeSDK.GetInstance().GetSpeakerState();
此接口用于开启关闭播放设备。
public abstract int EnableAudioPlayDevice (bool enabled);
参数 | 类型 | 含义 |
---|---|---|
isEnabled | bool | 如果需要关闭播放设备,则传入的参数为 false,如果打开播放设备,则参数为 true |
//打开播放设备
LTGmeSDK.GetInstance().EnableAudioPlayDevice(true);
此接口用于播放设备状态获取。
public abstract bool IsAudioPlayDeviceEnabled();
bool IsAudioPlayDevice = LTGmeSDK.GetInstance().IsAudioPlayDeviceEnabled();
此接口用于打开/关闭音频下行。如果播放设备已经打开,那么会播放房间里其他人的音频数据。如果播放设备没有打开,那么仍旧无声。播放设备的打开关闭参见接口请参见 EnableAudioPlayDevice。
public abstract int EnableAudioRecv(bool isEnabled);
参数 | 类型 | 含义 |
---|---|---|
isEnabled | bool | 如果需要打开音频下行,则传入的参数为 true,如果关闭音频下行,则参数为 false |
LTGmeSDK.GetInstance().EnableAudioRecv(true);
此接口用于音频下行状态获取。
public abstract bool IsAudioRecvEnabled();
bool IsAudioRecv = LTGmeSDK.GetInstance().IsAudioRecvEnabled();
此接口用于获取扬声器实时音量。返回值为 int 类型数值,表示扬声器实时音量。建议20ms获取一次。
public abstract int GetSpeakerLevel();
LTGmeSDK.GetInstance().GetAudioSpeakerLevel()
此接口用于获取房间内其他成员下行实时音量,返回值为 int 类型,取值范围为0 - 200。
public abstract int GetRecvStreamLevel(string openId);
参数 | 类型 | 含义 |
---|---|---|
openId | string | 房间其他成员的 openId |
int Level = LTGmeSDK.GetInstance().GetRecvStreamLevel(openId);
此接口用于设置扬声器的音量。
参数 volume 用于设置扬声器的音量,当数值为0时,表示静音,当数值为100时,表示音量不增不减,默认数值为100。
public abstract int SetSpeakerVolume(int volume);
参数 | 类型 | 含义 |
---|---|---|
volume | int | 设置音量,范围0 - 200 |
LTGmeSDK.GetInstance().SetAudioSpeakerVolume(int.Parse(volume));
此接口用于获取扬声器的音量。返回值为 int 类型数值,代表扬声器的音量,返回值为101代表没调用过接口 SetSpeakerVolume。
Level 是实时音量,Volume 是扬声器的音量,最终声音音量 = Level × Volume %。例如实时音量是数值是100,此时 Volume 的数值是60,那么最终发出来的声音数值也是60。
public abstract int GetSpeakerVolume();
LTGmeSDK.GetInstance().GetAudioSpeakerVolume()
此接口用于设置房间内某成员的说话音量大小,此设置只在本端生效。
public abstract int SetSpeakerVolumeByOpenID(string openid, int volume);
参数 | 类型 | 含义 |
---|---|---|
openId | string | 某成员openid |
volume | int | 期望的音量,范围为0-200,100表示无增强也无衰减 |
LTGmeSDK.GetInstance().SetSpeakerVolumeByOpenID("openid",100);
调用此接口获取SetSpeakerVolumeByOpenID设置的能量值
public abstract int GetSpeakerVolumeByOpenID(string openid);
参数 | 类型 | 含义 |
---|---|---|
openId | string | 某成员openid |
int vol =LTGmeSDK.GetInstance().GetSpeakerVolumeByOpenID("openid");
此接口用于启动耳返,需要 EnableLoopBack+EnableSpeaker 才可以听到自己声音。
public abstract int EnableLoopBack(bool enable);
参数 | 类型 | 含义 |
---|---|---|
enable | bool | 设置是否启动 |
LTGmeSDK.GetInstance().EnableLoopBack(value);
注意进房间时必须是流畅音质 进房后可以修改音质
此接口用于获取用户房间音频类型,返回值为房间音频类型,返回值为0时代表获取用户房间音频类型发生错误,房间音频类型参考 EnterRoom 接口。
public abstract int GetRoomType();
LTGmeSDK.GetInstance().GetRoomType()
public abstract int ChangeRoomType(int roomType);
public enum LTGMERoomType
{
ROOM_TYPE_FLUENCY = 1,//流畅音质
ROOM_TYPE_STANDARD = 2,//标准音质
ROOM_TYPE_HIGHQUALITY = 3,//高清音质
};
LTGmeSDK.GetInstance().ChangeRoomType(roomtype);
public abstract void onRoomTypeChangedCallback(int roomtype);
public override void onRoomTypeChangedCallback(int roomtype)
{
LTBaseSdkLog.LogWarning(string.Format("RoomTypeChanged current:{0}", roomtype));
//throw new System.NotImplementedException();
}
public static byte[] GenAuthBuffer(int appId, string roomID, string openId, string key)
参数 | 类型 | 含义 |
---|---|---|
appId | int | 来自腾讯云控制台的 AppId 号码。 |
roomId | string | 填null |
openId | string | 用户标识。与 Init 时候的 OpenId相同。 |
key | string | 来自腾讯云 控制台 的权限密钥。 |
生成鉴权信息后,将鉴权赋值到 SDK 中。
public abstract int ApplyPTTAuthbuffer (byte[] authBuffer);
参数 | 类型 | 含义 |
---|---|---|
authBuffer | byte[] | 鉴权 |
UserConfig.SetAppID(appid);
UserConfig.SetUserID(openid);
UserConfig.SetAuthKey(appkey);
byte[] authBuffer = LTGmeSDK.GetInstance().GetAuthBuffer(UserConfig.GetAppID(), null, UserConfig.GetUserID(), UserConfig.GetAuthKey());
LTGmeSDK.GetInstance().ApplyPTTAuthbuffer(authBuffer);
此接口用于启动流式语音识别,同时在回调中会有实时的语音转文字返回,可以指定语言进行识别,也可以将语音中识别到的信息翻译成指定的语言返回。停止录音调用 停止录制接口:StopRecording。
public abstract int StartRecordingWithStreamingRecognition(string filePath);
public abstract int StartRecordingWithStreamingRecognition(string filePath, string speechLanguage);
public abstract int StartRecordingWithStreamingRecognition(string filePath, string speechLanguage, string translatelanguage);
参数 | 类型 | 含义 |
---|---|---|
filePath | String | 存放的语音路径 |
speechLanguage | String | 识别成指定文字的语言参数,参数请参考 语音转文字的语言参数参考列表 |
filePath | String | 翻译成指定文字的语言参数,参数请参考 语音转文字的语言参数参考列表(此参数暂不可用,请填写与 speechLanguage 相同的参数) |
string recordPath = Application.streamingAssetsPath + string.Format("/{0}.silk", sUid++); LTGmeSDK.GetInstance().StartRecordingWithStreamingRecognition(recordPath,"cmn-Hans-CN","cmn-Hans-CN");
public abstract void onStreamingRecCompleteCallback(int code, string fileid, string filePath, string result);
消息名称 | 含义 |
---|---|
code | 用于判断流式语音识别是否成功的返回码 |
result | 语音转文字识别的文本 |
filePath | 录音存放的本地地址 |
fileid | 录音在后台的 url 地址,录音在服务器存放 90 天。fileid 固定字段为 http://gme-v2- |
错误码 | 含义 | 处理方式 |
---|---|---|
32775 | 流式语音转文本失败,但是录音成功 | 调用 UploadRecordedFile 接口上传录音,再调用 SpeechToText 接口进行语音转文字操作 |
32777 | 流式语音转文本失败,但是录音成功,上传成功 | 返回的信息中有上传成功的后台 url 地址,调用 SpeechToText 接口进行语音转文字操作 |
32786 | 流式语音转文本失败 | 在流式录制状态当中,请等待流式录制接口执行结果返回 |
public override void onStreamingRecCompleteCallback(int code, string fileid, string filePath, string result)
{
if (code == 0)
{
//setBtnText(mStreamBtn, "流式");
InputField field = transform.Find("recordFilePath").GetComponent<InputField>();
field.text = filePath;
field = transform.Find("downloadUrl").GetComponent<InputField>();
field.text = fileid; // 有了fileid就可以进行转文字的操作
field = transform.Find("convertTextResult").GetComponent<InputField>();
field.text = result;
Text tc = transform.Find("TextContent").GetComponent<Text>();
tc.text = result;
Debug.LogWarning("录制完成");
}
else if (code == -1)
{
Debug.LogWarning("录制失败:流式正在录制中");
}
else
{
if (code == 4103)
{
Debug.LogWarning("录制时长太短");
}
else if (code == 32775)
{
Debug.LogWarning(" 上传和翻译失败但是录音成功");
//调用 UploadRecordedFile 接口上传录音,再调用 SpeechToText 接口进行语音转文字操作
}
else if (code == 32777)
{
Debug.LogWarning(" 翻译失败但是录音和上传成功");
}
else
{
Debug.LogWarning("录制失败:" + Convert.ToString(code));
}
}
}
此接口用于启动录音。需要将录音文件上传后才可以进行语音转文字等操作。停止录音调用 StopRecording。
public abstract int StartRecording(string filePath);
参数 | 类型 | 含义 |
---|---|---|
fileDir | string | 存放的语音路径 |
string recordPath = Application.streamingAssetsPath + string.Format("/{0}.silk", sUid++);
int ret = LTGmeSDK.GetInstance().StartRecording(recordPath);
此接口用于停止录音。此接口为异步接口,停止录音后会有录音完成回调,成功之后录音文件才可用。
public abstract int StopRecording();
LTGmeSDK.GetInstance().StopRecording();
停止录音调用StopRecording。停止录音后才有启动录音的回调。
public abstract void onRecordFileCompleteCallback(int code, string filepath);
参数 | 类型 | 含义 |
---|---|---|
code | string | 当 code 为 0 时,录制完成 |
filepath | string | 录制的存放地址,必须是可以访问到的路径,不可将 fileid 作为路径 |
public override void onRecordFileCompleteCallback(int code, string filepath)
{
//throw new System.NotImplementedException();
if (this == null)
{
return;
}
//setBtnText(mRecordBtn, "录制");
if (code == 0)
{
InputField field = transform.Find("recordFilePath").GetComponent<InputField>();
field.text = filepath;
Debug.LogWarning("录制完成");
}
else
{
if (code == 4103)
{
Debug.LogWarning("录制时长太短");
}
else
{
Debug.LogWarning("录制失败:" + Convert.ToString(code));
}
}
}
此接口用于暂停录音。如需恢复录音请调用接口 ResumeRecording。
public abstract int PauseRecording();
LTGmeSDK.GetInstance().PauseRecording();
public abstract int ResumeRecording();
LTGmeSDK.GetInstance().ResumeRecording();
public abstract int CancelRecording();
LTGmeSDK.GetInstance().CancelRecording();
此接口用于获取麦克风实时音量,返回值为 int 类型,值域为0 - 200。
public abstract int GetMicLevel();
LTGmeSDK.GetInstance().GetPttMicLevel()
此接口用于设置离线语音录制音量,值域为0 - 200。
public abstract int SetMicVolume(int volume);
LTGmeSDK.GetInstance().SetPttMicVolume(result)
此接口用于获取离线语音录制音量。返回值为 int 类型,值域为0 - 200。
public abstract int GetMicVolume();
LTGmeSDK.GetInstance().GetPttMicVolume()
此接口用于获取扬声器实时音量。返回值为 int 类型,值域为0 - 200。
public abstract int GetSpeakerLevel();
LTGmeSDK.GetInstance().GetPttSpeakerLevel()
此接口用于播放语音。
public abstract int PlayRecordedFile(string filePath);
public abstract int PlayRecordedFile(string filePath,int voiceType);
参数 | 类型 | 含义 |
---|---|---|
filePath | string | 本地语音文件的路径 |
voicetype | int | 变声类型,请参考 变声接入文档 |
LTGmeSDK.GetInstance().PlayRecordedFile(filepath);
LTGmeSDK.GetInstance().PlayRecordedFileVoiceType(fileToPlay, vocicetype);
public abstract void onPlayFileCompleteCallback(int code, string filepath);
参数 | 类型 | 含义 |
---|---|---|
code | int | 当 code 为0时,播放完成 |
filepath | string | 录制的存放地址 |
public override void onPlayFileCompleteCallback(int code, string filepath)
{
//throw new System.NotImplementedException();
if (this == null)
{
return;
}
mIsPlaying = false;
//setBtnText(mPlayBtn, "播放");
if (code != 0)
{
Debug.LogWarning("播放失败" + Convert.ToString(code));
}
}
此接口用于停止播放语音。停止播放语音也会有播放完成的回调。
public abstract int StopPlayFile();
LTGmeSDK.GetInstance().StopPlayFile();
此接口用于设置离线语音播放音量,值域为0 - 200。
public abstract int SetSpeakerVolume(int volume);
LTGmeSDK.GetInstance().SetPttSpeakerVolume(result);
此接口用于获取离线语音播放音量。返回值为 int 类型,值域为0 - 200。
public abstract int GetSpeakerVolume();
LTGmeSDK.GetInstance().GetPttSpeakerVolume()
public abstract int GetFileSize(string filePath);
参数 | 类型 | 含义 |
---|---|---|
filePath | String | 语音文件的路径,此路径为本地路径 |
LTGmeSDK.GetInstance().GetFileSize(filepath)
public abstract int GetVoiceFileDuration(string filePath);
参数 | 类型 | 含义 |
---|---|---|
filePath | String | 语音文件的路径,此路径为本地路径 |
LTGmeSDK.GetInstance().GetVoiceFileDuration(filepath)
public abstract int UploadRecordedFile(string filePath);
参数 | 类型 | 含义 |
---|---|---|
filePath | String | 上传的语音路径,此路径为本地路径 |
LTGmeSDK.GetInstance().UploadRecordedFile(filePath);
public abstract void onUploadFileCompleteCallback(int code, string filepath, string fileid);
参数 | 类型 | 含义 |
---|---|---|
code | int | 当 code 为0时,录制完成 |
filepath | string | 录制的存放地址 |
fileid | string | 文件的 url 路径 |
public override void onUploadFileCompleteCallback(int code, string filepath, string fileid)
{
//throw new System.NotImplementedException();
if (code == 0)
{
Debug.LogWarning("上传成功");
InputField field = transform.Find("downloadUrl").GetComponent<InputField>();
field.text = fileid;
}
else
{
Debug.LogWarning("上传失败" + Convert.ToString(code));
InputField field = transform.Find("downloadUrl").GetComponent<InputField>();
field.text = "";
}
}
public abstract int DownloadRecordedFile(string fileID, string downloadFilePath);
参数 | 类型 | 含义 |
---|---|---|
fileID | String | 文件的 url 路径 |
downloadFilePath | string | 文件的本地保存路径,必须是可以访问到的路径,不可将 fileid 作为路径 |
LTGmeSDK.GetInstance().DownloadRecordedFile(fileID, downloadFilePath);
public abstract void onDownloadFileCompleteCallback(int code, string filepath, string fileid);
参数 | 类型 | 含义 |
---|---|---|
code | int | 当 code 为0时,录制完成 |
filepath | string | 录制的存放地址 |
fileid | string | 文件的 url 路径,录音在服务器存放 90 天 |
public override void onDownloadFileCompleteCallback(int code, string filepath, string fileid)
{
if (code == 0)
{
Debug.LogWarning("下载成功");
InputField field = transform.Find("downloadFilePath").GetComponent<InputField>();
field.text = filepath;
//InputField audioInput = transform.Find("auditResult").GetComponent<InputField>();
//audioInput.text = auditResult;
}
else
{
Debug.LogWarning("下载失败" + Convert.ToString(code));
InputField field = transform.Find("downloadFilePath").GetComponent<InputField>();
field.text = "";
//InputField audioInput = transform.Find("auditResult").GetComponent<InputField>();
//audioInput.text = auditResult;
}
//throw new System.NotImplementedException();
}
public abstract int SpeechToText(string fileID);
public abstract int SpeechToText(string fileID, string speechLanguage);
public abstract int SpeechToText(string fileID, string speechLanguage, string translatelanguage);
参数 | 类型 | 含义 |
---|---|---|
fileID | String | 语音文件 url,录音在服务器存放90天 |
speechLanguage | string | 识别出指定文字的语言参数,参数参考 语音转文字的语言参数参考列表 |
translatelanguage | string | 翻译成指定文字的语言参数,参数参考 语音转文字的语言参数参考列表(此参数暂时无效,填入参数应与 speechLanguage 一致) |
LTGmeSDK.GetInstance().SpeechToText(fileID, “ko-KR”,” ko-KR”);
public abstract void onSpeechToTextCompleteCallback(int code, string fileid, string result);
参数 | 类型 | 含义 |
---|---|---|
code | int | 当 code 为0时,录制完成 |
fileid | string | 语音文件 url,录音在服务器存放 90 天 |
result | string | 转换的文本结果 |
public override void onSpeechToTextCompleteCallback(int code, string fileid, string result)
{
//throw new System.NotImplementedException();
if (code == 0)
{
Debug.LogWarning("转换成功");
InputField field = transform.Find("convertTextResult").GetComponent<InputField>();
field.text = result;
//InputField audioInput = transform.Find("auditResult").GetComponent<InputField>();
//audioInput.text = auditResult;
}
else
{
Debug.LogWarning("转换失败" + Convert.ToString(code));
}
}
限制最大语音消息的长度,最大支持58秒。
public abstract int SetMaxMessageLength(int msTime);
参数 | 类型 | 含义 |
---|---|---|
msTime | int | 语音时长,单位 ms,区间为 1000 < msTime < 58000 |
LTGmeSDK.GetInstance().SetMaxMessageLength(58000);
使用范围语音,需要调用 SetRangeAudioTeamID 接口设置小队号 TeamID,再调用 EnterRoom 接口进入语音房间,即当进入语音房间时指定的 TeamID != 0 时,进入范围语音房间模式。
当进入范围语音房间时,有两种语音模式可供选择:
语音模式 | 参数名称 | 功能 |
---|---|---|
所有人 | RANGE_AUDIO_MODE_WORLD | 设置后玩家附近一定范围的人都能听到该玩家讲话,但不影响小队成员互相通话 |
仅小队 | RANGE_AUDIO_MODE_TEAM | 仅队友可以听到 |
不同的语音模式下,其具体的声音可达情况如下:
a. 同一小队内,无论距离多远、玩家为何种语音状态都能听见。
b. 不同小队情况下,双方开启“所有人”的语音状态情况下,在距离内可以互相听见。
如果设置的语音模式为所有人(RANGE_AUDIO_MODE_WORLD),此时的语音可达范围受 UpdateAudioRecvRange 接口影响。
• 是否在语音距离范围内,不影响同一小队成员互相通话。
• 设置接收语音距离范围参考 API:UpdateAudioRecvRange。
• 支持在范围语音房间中实时切换语音模式。但不支持在房间内更换 TeamID,TeamID 必须在进房前指定。
• 使用范围语音,必须使用流畅音质进房(即 RoomType=1)。
使用流程
有别于普通小队语音房间,在使用范围语音能力时,必须使用流畅音质进房,且在调用 EnterRoom 之前,需调用以下两个 API:SetRangeAudioTeamID、 SetRangeAudioMode(房后可修改)。
在进房成功后,调用 UpdateAudioRecvRange(至少一次),及每帧调用 UpdateSelfPosition。
前提条件
必须在初始化 GME 之后,且正确调用了核心接口,例如每帧调用 Poll 函数。
通过此方法设置队伍号,必须在 EnterRoom 之前调用。如果是退房后再进房,请在退房成功回调回来之后再调用设置队伍号接口。在退房时,此参数不会自动重置为0,所以一旦决定调用此语音模式,请在每次 EnterRoom 之前都调用此方法设置 TeamID。
public abstract int SetRangeAudioTeamID(int teamID);
参数 | 类型 | 意义 |
---|---|---|
teamID | int | 队伍号,专供范围语音中进行上下行音频流控制。当 TeamID 为0时,通话模式为普通小队语音,默认0。 |
LTGmeSDK.GetInstance().SetRangeAudioTeamID(int.Parse(teamid));
通过此方法修改语音模式,可在进房前调用,也可在进房后调用。
在进房前调用此方法,方法将影响下一次进房。
在进房后调用此方法,将直接改变当前用户的语音模式。
在退房时,此参数不会自动重置为 MODE_WORLD,所以一旦决定调用此方法,请在每次 EnterRoom 之前都调用此方法设置语音模式
public abstract int SetRangeAudioMode( int gameAudioMode);
参数 | 类型 | 意义 |
---|---|---|
rangeAudioMode | int | 0(MODE_WORLD) 代表“所有人”,1(MODE_TEAM) 代表”仅小队” |
LTGmeSDK.GetInstance().SetRangeAudioMode(0)
通过此方法用于设置接收的语音范围(距离以游戏引擎为准),只支持在进房成功后调用。
此方法必须配合 UpdateSelfPosition 更新声源方位联合使用。
此方法只需调用一次即可生效。
public abstract int UpdateAudioRecvRange(int range);
参数 | 类型 | 意义 |
---|---|---|
range | int | 最大可以接收音频的范围,单位为引擎距离单位 |
LTGmeSDK.GetInstance().UpdateAudioRecvRange(range);
更新声源方位,目的是告诉服务器本端位置,通过本端世界坐标+本端接收音频的范围,与其他端世界坐标+其他端接收音频的范围进行判断,达到范围语音效果。
此函数用于更新声源位置信息,只支持在进房成功后调用,且需要每帧调用,以 Unity 引擎为例,此接口需要在 Update 中调用。
使用范围语音一定要更新声源方位,如果不需要范围判断能力,也需要进房后调用此接口一次。
如果需要同时使用 3D 音效效果,此接口中的参数 axisForward、axisRight 及 axisUp 需要按照下文 3D 语音部分 进行设置。
public abstract int UpdateSelfPosition(int[] position, float[] axisForward, float[] axisRight, float[] axisUp);
参数 | 类型 | 意义 |
---|---|---|
position | int[] | 自身在世界坐标系中的坐标,顺序是前、右、上 |
axisForward | float[] | 在本产品中无需关注 |
axisRight | float[] | 在本产品中无需关注 |
axisUp | float[] | 在本产品中无需关注 |
LTGmeSDK.GetInstance().UpdateSelfPosition(position, axisForward, axisRight, axisUp);
如果3D音效结合范围语音 需要先初始化3D引擎 打开3D音效 再进行设置距离 更新方位
此函数用于初始化 3D 音效引擎,在进房后调用。在使用 3D 音效之前必须先调用此接口,只接收 3D 音效而不发出 3D 音效的用户也需要调用此接口。
public abstract int InitSpatializer(string modelPath);
参数 | 类型 | 意义 |
---|---|---|
modelPath | string | 3D 音效资源文件路径 |
LTGmeSDK.GetInstance().InitSpatializer(filePath);
public abstract int EnableSpatializer(bool enable, bool applyTeam);
参数 | 类型 | 意义 |
---|---|---|
enable | bool | 开启之后可以听到 3D 音效 |
applyToTeam | bool | 3D语音是否作用于小队内部,仅 enble 为 true 时有效 |
LTGmeSDK.GetInstance().EnableSpatializer(value, false);
public abstract bool IsEnableSpatializer();
bool result = LTGmeSDK.GetInstance().IsEnableSpatializer();
调用此接口设置音频转发规则,此接口在进房成功回调中调用,调用后此次进房生效,退房后失效。
注意
禁言功能 AddBlackList 为本端生效,优先级高于自定义音频路由。例如 A 通过 SetServerAudioRouteSendOperateType 设置了只听 B 说话,但是又调用了 AddBlackList 将B禁言,此时 A 将听不到 B 的声音。
使用前提
使用 GME 实时语音功能成功进入语音房间,并且打开了麦克风(EnableMic)、扬声器(EnableSpeaker)。
int SetServerAudioRouteSendOperateType(int Sendtype, string[] sendArray, int Recvtype, string[] recvArray)
类型说明Sendtype
设置发送音频规则,不同的规则填入后,会有不同的发送规则。
接收类型 | 效果 |
---|---|
1:AUDIO_ROUTE_NOT_SEND_TO_ANYONE | 本端音频上行发送到后台,但后台不转发给任何人,相当于将自己静音,此时参数 OpenIDForSend 无效,只需填 null |
2:AUDIO_ROUTE_SEND_TO_ALL | 本端音频上行将转发给所有人,此时参数 OpenIDForSend 无效,只需填 null |
3:AUDIO_ROUTE_SEND_BLACK_LIST | 本端音频上行将不转发给黑名单的人,黑名单由参数 OpenIDForSend 提供 |
4:AUDIO_ROUTE_SEND_WHITE_LIST | 本端音频上行将只转发给白名单的人,白名单由参数 OpenIDForSend 提供 |
说明:
如果类型传入 AUDIO_ROUTE_NOT_SEND_TO_ANYONE 以及 AUDIO_ROUTE_SEND_TO_ALL ,此时的参数 OpenIDForSend 不生效,只需要填 null。
如果类型传入 AUDIO_ROUTE_SEND_BLACK_LIST ,此时参数 OpenIDForSend 为黑名单列表,最多支持 10 个。
如果类型传入 AUDIO_ROUTE_SEND_WHITE_LIST ,此时参数 OpenIDForSend 为白名单列表,最多支持 10 个。
类型说明 Recvtype
设置接收音频规则,不同的规则填入后,会有不同的接收规则。
接收类型 | 效果 |
---|---|
1:AUDIO_ROUTE_NOT_RECV_FROM_ANYONE | 本端不接受任何音频,相当于关闭房间内扬声器效果,此时参数 OpenIDForSend 无效,只需填 null |
2:AUDIO_ROUTE_RECV_FROM_ALL | 本端接收所有人的音频,此时参数 OpenIDForSend 无效,只需填 null |
3:AUDIO_ROUTE_RECV_BLACK_LIST | 本端不接收黑名单的人的音频声音,黑名单由参数 OpenIDForSend 提供 |
4:AUDIO_ROUTE_RECV_WHITE_LIST | 本端只接收白名单的人的音频声音,白名单由参数 OpenIDForSend 提供 |
说明:
如果类型传入 AUDIO_ROUTE_NOT_RECV_FROM_ANYONE 以及 AUDIO_ROUTE_RECV_FROM_ALL OpenIDForSend 不生效。
如果类型传入 AUDIO_ROUTE_RECV_BLACK_LIST ,此时参数 OpenIDForSend 为黑名单列表,最多支持 10 个。
如果类型传入 AUDIO_ROUTE_RECV_WHITE_LIST ,此时参数 OpenIDForSend 为白名单列表,最多支持 10 个。
int ret = LTGmeSDK.GetInstance().SetServerAudioRouteSendOperateType(sendtype, sendArray, recvtype, recvArray);
if (ret != 0){
Debug.LogWarning(string.Format("SetServerAudioRouteSendOperateType, error ={0}", ret));
}
回调处理
public override void onServerAudioRouteEventCallback(int result, string error_info, int sub_type)
{
//throw new System.NotImplementedException();
}
调用此接口获取音频转发规则。调用后接口返回规则,传入的数组参数会返回相应规则的 openId。
int ret1 = LTGmeSDK.GetInstance().GetCurrentSendAudioRoute(sendArray);
Debug.LogWarning("GetCurrentSendAudioRoute = "+ ret1);
接收类型(int) | 效果 |
---|---|
1:AUDIO_ROUTE_NOT_SEND_TO_ANYONE | 本端音频上行发送到后台,但后台不转发给任何人,相当于将自己静音 |
2:AUDIO_ROUTE_SEND_TO_ALL | 本端音频上行将转发给所有人 |
3:AUDIO_ROUTE_SEND_BLACK_LIST | 本端音频上行将不转发给黑名单的人 |
4:AUDIO_ROUTE_SEND_WHITE_LIST | 本端音频上行将只转发给白名单的人 |
0:AUDIO_ROUTE_RECV_INQUIRE_ERROR | 获取出错,检查是否进入房间,是否已经初始化 SDK |
int ret2 = LTGmeSDK.GetInstance().GetCurrentRecvAudioRoute(recvArray);
Debug.LogWarning("GetCurrentRecvAudioRoute = "+ ret2);
接收类型(int) | 效果 |
---|---|
1:AUDIO_ROUTE_NOT_RECV_FROM_ANYONE | 本端不接受任何音频,相当于关闭房间内扬声器效果 |
2:AUDIO_ROUTE_RECV_FROM_ALL | 本端接收所有人的音频 |
3:AUDIO_ROUTE_RECV_BLACK_LIST | 本端不接收黑名单的人的音频声音 |
4:AUDIO_ROUTE_RECV_WHITE_LIST | 本端只接收白名单的人的音频声音 |
0:AUDIO_ROUTE_RECV_INQUIRE_ERROR | 获取出错,检查是否进入房间,是否已经初始化 SDK |
使用前提
使用 GME 实时语音功能成功进入语音房间,并且打开了麦克风(EnableMic)。
变声接口
调用 SetVoiceType 接口设置变声特效,接口返回0代表调用成功,房间内的人听到的本端发出的声音带有变声效果。
public static int VOICE_TYPE_ORIGINAL_SOUND = 0; /// 原声
public static int VOICE_TYPE_LOLITA = 1; /// 萝莉
public static int VOICE_TYPE_UNCLE = 2; /// 大叔
public static int VOICE_TYPE_INTANGIBLE = 3; /// 空灵
public static int VOICE_TYPE_DEAD_FATBOY = 4; /// 死肥宅
public static int VOICE_TYPE_HEAVY_MENTAL = 5; /// 重金属
public static int VOICE_TYPE_DIALECT = 6; /// 歪果仁
public static int VOICE_TYPE_INFLUENZA = 7; /// 感冒
public static int VOICE_TYPE_CAGED_ANIMAL = 8; /// 困兽
public static int VOICE_TYPE_HEAVY_MACHINE = 9; /// 重机器
public static int VOICE_TYPE_STRONG_CURRENT = 10; /// 强电流
public static int VOICE_TYPE_KINDER_GARTEN = 11; /// 幼稚园
public static int VOICE_TYPE_HUANG = 12; /// 小黄人
public abstract int SetVoiceType(int voiceType);
LTGmeSDK.GetInstance().SetVoiceType(voicevalue);
语音消息变声不会影响原始的音频信息,在播放的时候才体现变声效果。
语音消息播放
语音消息播放接口,带有变声效果参数。
public abstract int PlayRecordedFile(string filePath,int voiceType);
参数 | 类型 | 意义 |
---|---|---|
filePath | string | 本地语音文件的路径 |
voicetype | int | 变声类型 |
LTGmeSDK.GetInstance().PlayRecordedFileVoiceType(fileToPlay, vocicetype);
通过客户端房间管理接口,可以简单实现对房间内成员的管理、以及对房间内成员上下麦的管理。
采集管理接口包含麦克风管理、音频上行管理以及采集硬件设备管理。其中麦克风管理相当于音频上行管理加上采集硬件设备管理,区分出音频数据传输上下行与硬件设备的管理,是因为打开或者关闭采集设备,将会伴随整个设备(采集和播放)重启,如果此时 App 正在播放背景音乐,那么背景音乐的播放也会被中断。利用控制上下行的方式来实现开关麦克风效果,将不会中断播放设备。
调用此接口打开或关闭房间内某用户的麦克风,调用成功后,该用户的麦克风将被关闭或打开。
EnableMic 相当于同时调用 EnableAudioSend 及 EnableAudioCaptureDevice。
public abstract int RoomManagerEnableMic(bool isEnabled, string receiverID)
参数 | 类型 | 意义 |
---|---|---|
enable | bool | 打开或者关闭 |
receiverID | string | 接收方openId |
LTGmeSDK.GetInstance().RoomManagerEnableMic(true, "openid");
回调函数中OperateType为4
调用此接口打开或关闭房间内某用户的音频上行。调用成功后,该用户的音频上行将被关闭或打开,但不影响麦克风采集。
public abstract int RoomManagerEnableAudioSend(bool isEnabled, string receiverID)
参数 | 类型 | 意义 |
---|---|---|
enable | bool | 打开或者关闭 |
receiverID | string | 接收方openId |
LTGmeSDK.GetInstance().RoomManagerEnableAudioSend(true, "openid");
回调函数中OperateType为2
调用此接口打开或关闭房间内某用户的音频采集硬件设备。调用成功后,该用户的音频采集硬件设备将被关闭或打开,但不影响上行。
public abstract int RoomManagerEnableAudioCaptureDevice(bool isEnabled, string receiverID)
参数 | 类型 | 意义 |
---|---|---|
enable | bool | 打开或者关闭 |
receiverID | string | 接收方openId |
LTGmeSDK.GetInstance().RoomManagerEnableAudioCaptureDevice(true, "openid");
回调函数中OperateType为0
播放管理接口包含扬声器管理、音频下行管理以及播放硬件设备管理。其中扬声器管理相当于音频下行管理加上播放硬件设备管理。区分出音频数据传输上下行与硬件设备的管理,是因为打开或者关闭采集设备,将会伴随整个设备(采集及播放)重启,如果此时 App 正在播放背景音乐,那么背景音乐的播放也会被中断。利用控制上下行的方式来实现开关麦克风效果,不会中断播放设备。
调用此接口打开或关闭房间内某用户的扬声器。调用成功后,该用户的扬声器将被关闭或打开,听到房间内的音频声音。
EnableSpeaker 相当于同时调用 EnableAudioRecv 及 EnableAudioPlayDevice。
public abstract int RoomManagerEnableSpeaker(bool isEnabled, string receiverID)
参数 | 类型 | 意义 |
---|---|---|
enable | bool | 打开或者关闭 |
receiverID | string | 接收方openId |
LTGmeSDK.GetInstance().RoomManagerEnableSpeaker(true, "openid");
回调函数中OperateType为5
调用此接口打开或关闭房间内某用户的音频下行。调用成功后,该用户的音频下行将被关闭或打开,但不影响播放设备。
public abstract int RoomManagerEnableAudioRecv(bool isEnabled, string receiverID)
参数 | 类型 | 意义 |
---|---|---|
enable | bool | 打开或者关闭 |
receiverID | string | 接收方openId |
LTGmeSDK.GetInstance().RoomManagerEnableAudioRecv(true, "openid");
回调函数中OperateType为3
调用此接口打开或关闭房间内某用户的音频播放硬件设备。调用成功后,该用户的音频播放硬件设备将被关闭或打开,但不影响下行。
public abstract int RoomManagerEnableAudioPlayDevice(bool isEnabled, string receiverID)
参数 | 类型 | 意义 |
---|---|---|
enable | bool | 打开或者关闭 |
receiverID | string | 接收方openId |
LTGmeSDK.GetInstance().RoomManagerEnableAudioPlayDevice(true, "openid");
回调函数中OperateType为1
调用此接口,获取房间内某成员的麦克风状态。
public abstract int RoomManagerGetMicState(string receiverID)
参数 | 类型 | 意义 |
---|---|---|
receiverID | string | 接收方openId |
LTGmeSDK.GetInstance().RoomManagerGetMicState("openid")
回调函数中OperateType为6
调用此接口,获取房间内某成员的麦克风状态。
public abstract int RoomManagerGetSpeakerState(string receiverID)
参数 | 类型 | 意义 |
---|---|---|
receiverID | string | 接收方openId |
LTGmeSDK.GetInstance().RoomManagerGetSpeakerState("openid")
回调函数中OperateType为7
成员进房默认为允许操作麦克风及扬声器,调用此接口可以禁止房间内的某位成员操作麦克风及扬声器,在该成员退出房间后此功能失效。
public abstract int RoomManagerForbidUserOperation(bool isEnabled, string receiverID)
参数 | 类型 | 意义 |
---|---|---|
enable | bool | true:禁止某用户操作设备,false:允许某用户操作设备 |
receiverID | string | 填入目标用户 OpenId |
LTGmeSDK.GetInstance().RoomManagerForbidUserOperation(true, "openid")
回调函数中OperateType为8
public abstract void onRoomManagementOperator(string SenderID,string ReceiverID,string UUID, int OperateType, bool OperateValue, int Result);
参数 | 类型 | 意义 |
---|---|---|
SenderID | string | 事件发送者 ID,如果与自己 OpenId 相同,即为本端发送的命令 |
ReceiverID | string | 事件接收者 ID,如果与自己 OpenId 相同,即为本端接收的命令 |
UUID | string | UUID |
OperateType | int | 事件类型 |
Result | int | 事件结果,0为成功 |
OperateValue | bool | 命令详情 |
OperateType
数值 | 意义 |
---|---|
0 | 控制采集设备硬件回调 |
1 | 控制播放设备硬件回调 |
2 | 控制上行回调 |
3 | 控制下行回调 |
4 | 控制麦克风回调 |
5 | 控制扬声器回调 |
6 | 获取麦克风状态 |
7 | 获取扬声器状态 |
8 | 禁止操作麦克风及扬声器事件 |
public override void onRoomManagementOperator(string SenderID, string ReceiverID, string UUID, int OperateType, bool OperateValue, int Result)
{
//throw new NotImplementedException();
transform.Find("Canvas/rmCallBackText").GetComponent<Text>().text = "senderid :" + SenderID + " receicerid: " + ReceiverID + " uuid: " + UUID + " operatetype: " + OperateType + " operateValue: " + OperateValue + " result : " + Result;
}
获取 SDK 版本号,用于分析。
public abstract string GetSDKVersion();
LTGmeSDK.GetInstance().GetSDKVersion()
用于设置打印日志等级。建议保持默认等级。需要在 Init 之前调用。
public abstract int SetLogLevel(int levelWrite, int levelPrint);
public static int LOG_LEVEL_NONE = -1; //不打印日志
public static int LOG_LEVEL_ERROR = 1; //打印错误日志(默认)
public static int LOG_LEVEL_INFO = 2; //打印提示日志
public static int LOG_LEVEL_DEBUG = 3; //打印开发调试日志
public static int LOG_LEVEL_VERBOSE = 4; //打印高频日志
LTGmeSDK.GetInstance().SetLogLevel(2, 2);
用于设置打印日志路径。默认路径如下。需要在 Init 之前调用。
平台 | 路径 |
---|---|
Windows | %appdata%\Tencent\GME\ProcessName |
iOS | Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents |
Android | /sdcard/Android/data/xxx.xxx.xxx/files |
Mac | /Users/username/Library/Containers/xxx.xxx.xxx/Data/Documents |
public abstract int SetLogPath(string logDir);
参数 | 类型 | 含义 |
---|---|---|
logDir | String | 路径 |
LTGmeSDK.GetInstance().SetLogPath(Application.persistentDataPath);
获取音视频通话的实时通话质量的相关信息。该接口主要用来查看实时通话质量、排查问题等,业务侧可以忽略。
public abstract string GetQualityTips();
LTGmeSDK.GetInstance().GetQualityTips()
上海中清龙图软件有限公司