中文帮助文档>SDK

Windows SDK开发指南

1.概述
轻码云平台Windows SDK是以C++动态库的方式提供给windows开发人员,本SDK提供了直拨、回拨和P2P等通讯能力,可以快速为你的Windows应用实现语音通话功能。
2.SDK 文件介绍
QMYClient.h为SDK函数头文件。
qmysdk.lib为SDK静态库文件。
qmysdk.dll为SDK动态库文件。
3.SDK开发环境与要求
sdk 使用vs2008 开发,为保证最大兼容性,推荐使用 Visual Studio 2008作为开发环境。
4.api调用流程

4.1 落地呼叫/p2p呼叫

首先初始化SDK 传入回调接口结构体
函数名: Qmy_init
功  能: 初始化SDK
返回值: 成功返回一个句柄,失败返回空;
QMYCLIENT_API void * WINAPI Qmy_init(IN QMY_CALLBACKINTERFACE *callbackInterface);
函数指针结构体
typedef struct _QMY_CALLBACKINTERFACE
{
    void(*onAlerting)(const char *callid);                  //响铃回调
    void(*onAnswer)(const char *callid);                    //接听回调
    void(*onDialFailed)(const char *callid, int reason);    //拨打失败回调
    void(*onHangUp)(const char *callid, int reason);        //挂断回调
    void(*onInComingCall)(const char *callid,const char *account,const char *displaynum);//来电回调
    void(*onCallBack)(int reason);  //双向回拨回调
}QMY_CALLBACKINTERFACE;
连接平台 传入帐户信息及 sdk 句柄
函数名: Qmy_connect
功  能: 连接轻马云通讯开放平台服务器
参  数: [IN]accountSid: 开发者账号(可登录轻码云平台用户中心查看或向接口提供方索取)
[IN]appid: appid应用Id(登录轻码云平台创建应用幵上线, 会自劢分配 appId(应用 ID),也可向接口提供方索取(如果是接口提供方代
为创建))
[IN]ClientNumber: Client账号     
[IN]ClientPwd: Client密码   
[IN]Clientphone: 主叫号码       
返回值: 是否连接成功 0:成功;非0失败
QMYCLIENT_API int WINAPI Qmy_connect(IN void * hHandle, IN const char *accountSid, IN const char *appId,
IN const char *clientNumber,IN const char *clientPwd ,IN const char* clientPhone);  
发起呼叫
函数名: Qmy_dial 
功  能: 发起呼叫  
参  数: [IN]callType: 呼叫类型(VOICE_CALL,VOICE_CALL_LANDING)
VOICE_CALL P2P 呼叫
VOICE_CALL_LANDING 落地呼叫
[IN]calledNumber: 被叫方号码
返回值: 返回值为callid,本次呼叫的唯一标识;NULL表示失败
CLIENTELE const char* WINAPI Qmy_dial(IN void * hHandle,IN QMY_DIALTYPE callType,IN const char *calledNumber);

4.2 双向回拨

!回拨接口内部调用 reset api 实现在网络差时耗时较长 建议使用线程调用。具体可参照demo实现。

4.2.1callback 回调参数

0 成功
-1 参数错误或 http错误
其它参数参照官网reset api 返回状态码,或demo 中的 errormap.ini。
函数名: Qmy_callBackShowNum
功  能: 双向回呼,如果后面2个参数都为空,则表示不显号
参  数: [IN] phoneNumber: 被叫号码
[IN] toNum: 被叫显示号码(可选)
[IN] fromNum: 主叫显示号码(可选)
返回值: 是否成功 0:成功; 非0失败
QMYCLIENT_API int WINAPI Qmy_callBack(IN void * hHandle, IN const char *phoneNumber, IN const char *toNum = "", 
IN const char *fromNum = "");

4.3 p2p来电

接听来电

函数名: Qmy_Accept
功  能: 接听
参  数: [IN] callid : 当前呼叫的唯一标识
返回值: 是否成功 0:成功;非0失败
QMYCLIENT_API int WINAPI Qmy_Accept(IN void * hHandle,IN const char *callid);

挂断电话

函数名: Qmy_hangUp
功  能: 挂机
参  数: [IN]  callid : 当前呼叫的唯一标识
返回值: 是否成功 0:成功; 非0失败
QMYCLIENT_API int WINAPI Qmy_hangUp(IN void * hHandle,IN const char *callid);

4.4 电话录音

函数名: Qmy_startRecord
功  能: 开始电话录音
参  数: [IN] callid:当前呼叫的唯一标识
[IN] filePath:文件路径  1.必须为wav后缀。
2.该参数仅在对callid 第一次调用下有效,调用Qmy_stopRecord 后再调用Qmy_startRecord会忽略该参数返回值:是否成功0:成功;非0失败
QMYCLIENT_API int WINAPI Qmy_startRecord(IN void * hHandle,IN const char *callid,IN const char *filePath);
函数名: Qmy_stopRecord
功  能: 停止电话录音 可以不调用 通话结束后自动停止
参  数: [IN] callid :当前呼叫的唯一标识
返回值: 是否成功0:成功;非0失败
QMYCLIENT_API int WINAPI Qmy_stopRecord(IN void * hHandle,IN const char *callid);

4.5 播放音频

函数名: Qmy_startPlaySound
功  能: 开始电话录音
参  数: [IN]  callid : 当前呼叫的唯一标识
[IN] filePath : 文件路径  1.必须为wav后缀.(WAV文件必须被格式化为16bit PCM mono/single channel)
[IN] blocal true 向本地播放,false 向对方播放(在对方响铃时调用本地播放可用来实现回铃音)
[IN] bloop true 循环播放,false 不循环播放
[IN] bMixing true 混音 false 不混音(注意不混音的情况下需要显示调用Qmy_stopPlaySound 才能恢复通话)
返回值: 是否成功 0:成功;非0失败
QMYCLIENT_API int WINAPI Qmy_startPlaySound(IN void * hHandle,IN const char *callid,IN const char *filePath,IN bool bLocal,
IN bool bLoop,IN bool bMixing);
函数名: Qmy_getPlayPercent
功  能: 获取当前播放百分比
参  数: [IN] callid:当前呼叫的唯一标识
[OUT] percent: 用于接收百分比[0,1]
返回值: 是否成功0:成功;非0失败
QMYCLIENT_API int WINAPI Qmy_getPlayPercent(IN void * hHandle,IN const char *callid,OUT float *percent);
函数名: Qmy_setPlayPercent
功  能: 设置当前播放百分比
参  数: [IN] callid:当前呼叫的唯一标识
[IN] percent: 百分比[0,1]
返回值: 是否成功0:成功;非0失败
QMYCLIENT_API int WINAPI Qmy_setPlayPercent(IN void * hHandle,IN const char *callid,IN float percent);
函数名: Qmy_stopPlaySound
功  能: 停止播放声音文件
参  数: [IN] callid:当前呼叫的唯一标识
返回值: 是否成功0:成功;非0失败
QMYCLIENT_API int WINAPI Qmy_stopPlaySound(IN void * hHandle,IN const char *callid);

4.6 信号强度调节

函数名: Qmy_setRxSignalLevel
功  能: 设置接收信号强度
参  数: [IN] callid:当前呼叫的唯一标识
[IN] level: 强度[0,255] 0表示静音 1表示没有增强
返回值: 是否成功0:成功;非0失败
QMYCLIENT_API int WINAPI Qmy_setRxSignalLevel(IN void * hHandle,IN const char *callid,float level);
函数名: Qmy_setTxSignalLevel
功  能: 设置输出信号强度
参  数: [IN] callid:当前呼叫的唯一标识
[IN] level: 强度[0,255] 0表示静音 1表示没有增强
返回值: 是否成功0:成功;非0失败
QMYCLIENT_API int WINAPI Qmy_setTxSignalLevel(IN void * hHandle,IN const char *callid,float level);

4.7 注销

函数名: Qmy_unInit
功能: 注销sdk使用完成后调用  
hHandel Qmy_init返回的句柄   
QMYCLIENT_API void WINAPI Qmy_unInit(IN void * hHandle);

4.8 获取SDK版本

函数名: Qmy_getSDKVersion()
功能: 获取SDK版本
hHandel Qmy_init返回的句柄   
QMYCLIENT_API const char * WINAPI  Qmy_getSDKVersion(IN void * hHandle);

5.关于windows demo

QMYSdkEngine.h 中对 c风格 api进行了面向对象封装,利用QMYNotifyCenter.h中实现的通知中心 对回调进行分发(观察者模式)

使用的开源项目:

crashrpt crash捕获
chromium 线程框架 base
duilib 界面ui
glog 日志输出