| 重要接口 | 接口含义 |
| Init | 初始化 GME |
| Poll | 触发事件回调 |
| EnterRoom | 进房 |
| EnableMic | 开麦克风 |
| EnableSpeaker | 开扬声器 |
二、1、获取单例
在使用语音功能时,需要首先获取 ITMGContext 对象。
三、示例代码
ITMGContext* context = ITMGContextGetInstance();context->SetTMGDelegate(this);
四、2、初始化 SDK
参数获取请查看 接入指引。
此接口需要来自腾讯云控制台的 AppID 号码作为参数,再加上 openID,这个 openID 是唯一标识一个用户,规则由 App 开发者自行制定,App 内不重复即可(目前只支持 INT64)。
注意:初始化 SDK 之后才可以进房。
五、函数原型
ITMGContext virtual int Init(const char* sdkAppId, const char* openID)
| 参数 | 类型 | 含义 |
| sdkAppId | char* | 来自腾讯云控制台的 AppId 号码。 |
| openId | char* | OpenID 只支持 Int64 类型(转为 char* 传入),数值必须大于 10000,用于标识用户 |
六、示例代码
#define SDKAPPID3RD "1400089356"cosnt char* openId="10001";ITMGContext* context = ITMGContextGetInstance();context->Init(SDKAPPID3RD, openId);
七、3、触发事件回调
通过在 update 里面周期的调用 Poll 可以触发事件回调。
八、函数原型
class ITMGContext {protected: virtual ~ITMGContext() {}public: virtual void Poll()= 0;}
九、示例代码
ITMGContextGetInstance()->Poll();
十、4、鉴权信息
生成 AuthBuffer,用于相关功能的加密和鉴权,如正式发布请使用后台部署密钥,后台部署请参考 鉴权密钥。离线语音获取鉴权时,房间号参数必须填 null。
十一、函数原型
int QAVSDK_AuthBuffer_GenAuthBuffer(unsigned int dwSdkAppID, const char* strRoomID, const char* strOpenID, const char* strKey, unsigned char* strAuthBuffer, unsigned int bufferLength);
| 参数 | 类型 | 含义 |
| dwSdkAppID | int | 来自腾讯云控制台的 AppId 号码。 |
| strRoomID | char* | 房间号,最大支持127字符(离线语音房间号参数必须填 null) |
| strOpenID | char* | 用户标识。与 Init 时候的 openID相同。 |
| strKey | char* | 来自腾讯云 控制台 的权限密钥。 |
| strAuthBuffer | char* | 返回的 authbuff |
| bufferLength | int | 传入的 authbuff 长度,建议为 500 |
十二、示例代码
unsigned int bufferLen = 512;unsigned char retAuthBuff[512] = {0};QAVSDK_AuthBuffer_GenAuthBuffer(atoi(SDKAPPID3RD), roomId, "10001", AUTHKEY,retAuthBuff,bufferLen);
十三、5、加入房间
用生成的鉴权信息进房,会收到消息为 ITMG_MAIN_EVENT_TYPE_ENTER_ROOM 的回调。加入房间默认不打开麦克风及扬声器。返回值为 AV_OK 的时候代表成功。
如果普通语音进房,业务方面无涉及范围语音需求,则使用普通进房接口。详细信息请查看 范围语音。
十四、函数原型
ITMGContext virtual int EnterRoom(const char* roomID, ITMG_ROOM_TYPE roomType, const char* authBuff, int buffLen)
| 参数 | 类型 | 含义 |
| roomID | char* | 房间号,最大支持127字符 |
| roomType | ITMG_ROOM_TYPE | 房间音频类型 |
| authBuffer | char* | 鉴权码 |
| buffLen | int | 鉴权码长度 |
房间音频类型请参考 音质选择。
十五、示例代码
ITMGContext* context = ITMGContextGetInstance();context->EnterRoom(roomID, ITMG_ROOM_TYPE_STANDARD, (char*)retAuthBuff,bufferLen);
十六、6、加入房间事件的回调
加入房间完成后会发送信息 ITMG_MAIN_EVENT_TYPE_ENTER_ROOM,在 OnEvent 函数中进行判断。
十七、示例代码
void TMGTestScene::OnEvent(ITMG_MAIN_EVENT_TYPE eventType,const char* data){ switch (eventType) { case ITMG_MAIN_EVENT_TYPE_ENTER_ROOM: { //进行处理 break; } }}
十八、7、开启关闭麦克风
此接口用来开启关闭麦克风。加入房间默认不打开麦克风及扬声器。
十九、函数原型
ITMGAudioCtrl virtual int EnableMic(bool bEnabled)
| 参数 | 类型 | 含义 |
| bEnabled | bool | 如果需要打开麦克风,则传入的参数为 true,如果关闭麦克风,则参数为 false |
20、示例代码
ITMGContextGetInstance()->GetAudioCtrl()->EnableMic(true);
21、8、开启关闭扬声器
此接口用于开启关闭扬声器。
22、函数原型
ITMGAudioCtrl virtual int EnableSpeaker(bool enabled)
| 参数 | 类型 | 含义 |
| enable | bool | 如果需要关闭扬声器,则传入的参数为 false,如果打开扬声器,则参数为 true |
23、示例代码
ITMGContextGetInstance()->GetAudioCtrl()->EnableSpeaker(true);