SparkleComm Android SDK使用说明¶
概述¶
本文档是SparkleComm Android SDK库的使用教程,请先把SparkleCommSDK-release.aar库集成到Android Studio开发环境里。
Demo说明:
HomeActivity.java 是主界面,包含了拨号功能;singleInstance模式。
IncomingActivity.java 是来电界面;singleInstance模式。
InCallActivity.java 是通话界面;singleInstance模式。
LoogearApplication.java 实现前后台切换时,注册与注销的方法。
接口函数¶
PhoneApi是SDK的主要接口函数类;接口的具体使用流程可以参考DEMO APP的调用;
初始化SDK¶
/**
 * 初始化SDK,必须第一个被调用:每次进行注册时都先调用一次
 * @param context
 * @param sipEvent SIP消息接收接口,会在主线程回调
 */
public void initSdk(Context context, ISipEvent sipEvent);
注册SIP服务器¶
/**
 * 注册到SIP服务器:initSdk调用后进行调用,注册SIP,注册消息会通过ISipEvent接口回调(initSdk函数里传递的)
 * @param serverAddr 服务器地址IP地址或者域名
 * @param port SIP服务器端口号
 * @param userID 用户ID如10011\@loogear.com或者10011
 * @param userPWD 注册密码
 * @param accountID 账号编号此处传入0
 * @param domain 域名如loogear.com,参考服务器的分配域名可能与serverAddr相同,也可能不同
 * @param authWithDomain 是否带域名认证,默认为false。参考服务器的要求。
 * @param idUri 参考服务器的注册要求,默认为空
 * @param useIMS3GPP 是否采用IMS的3gpp认证,参考服务器的注册要求
 * @param extraHeads 扩展消息格式标准为"X-HEAD_NAME1:head1 value;X-HEAD_NAME2:head2 value",头部消息间用";"分隔:
 *                   如:"X-SparkleComm-Call-DEVICE-ID: EF32D-98AF-9E01-882E;X-SparkleComm-Call-MSG2:this is other message"
 */
public void registerToSipServer(String serverAddr, int port, String userID, String userPWD, int accountID,
                                String domain, boolean authWithDomain, String idUri, boolean useIMS3GPP, String extraHeads);
注销SIP服务器¶
 /**
 * 反注册SIP服务器
 * @param accountID
 */
public void unRegister(int accountID)
拨打电话¶
/**
 * 发起带扩展消息的语音呼叫
 * @param calleeAdd 对方号码
 * @param extraData 扩展消息格式标准为"X-HEAD_NAME1:head1 value;X-HEAD_NAME2:head2 value",头部消息间用";"分隔:
 *                  如:"X-SparkleComm-Call-DEVICE-ID: EF32D-98AF-9E01-882E;X-SparkleComm-Call-MSG2:this is other message"
 * @param accountID 呼叫帐号编号(用于多账户注册)
 */
public void makeVoiceCall(String calleeAdd, String extraData, int accountID);
挂断电话¶
/**
 * 挂断电话
 * @param callID
 * @param accountID
 */
public void releaseCall(int callID, int accountID);
启用视频¶
/**
 * 是否打开视频通话功能
 * @param enable
 */
public void enableVideo(boolean enable);
设置视频窗口¶
/**
 * 设置视频窗口
 * @param preview 预览窗口
 * @param remote 对方窗口
 */
public void setVideoDisplays(Surface preview, Surface remote);
设置视频分辨率¶
/**
 * 设置视频显示分辨率
 */
public void setVideoResolution(VIDEO_RES res);
旋转摄像头角度¶
/**
 * 旋转摄像头角度
 * @param angle
 */
public void setVideoCaptureOrient(int angle);
开始录音¶
/**
 * 开始录音
 * @param path 录音文件存放目录
 * @param fileName 录音文件名
 * @param accountID 账户ID
 * @param callID 通话ID
 * @return 录音ID
 */
public int startRecord(String path, String fileName, int accountID, int callID);
停止录音¶
/**
 * 停止录音:可以主动调用此函数停止录音,通话结束后也会自动停止录音
 * @param recordId 录音ID
 * @param accountID 账户ID
 * @param callID 通话ID
 * @return
 */
public boolean stopRecord(int recordId, int accountID, int callID);
显示预览视频¶
/**
 * 显示预览视频
 */
public void showVideoPrevieWindow();
隐藏预览视频¶
/**
 * 隐藏预览视频
 */
public void hideVideoPrevieWindow();
呼叫保持¶
/**
 * 呼叫保持
 * @param accountID
 * @param callID
 */
public void callHold(int accountID, int callID);
取消呼叫保持¶
/**
 * 取消呼叫保持
 * @param accountID
 * @param callID
 */
public void releaseHold(int accountID, int callID);
接听¶
/**
 * 接听
 * @param callID
 * @param accountID
 */
public void answerCall(int callID, int accountID);
发送DTMF消息¶
/**
 * 发送DTMF消息
 * @param digits
 */
public void sendDtmf(String digits);
静音¶
/**
 * 设置MIC静音
 * @param on true=静音 false=取消静音
 */
public void setMicMute(boolean on);
呼叫转移¶
/**
 * 呼叫转移
 * @param addr 目标地址
 * @param callID
 * @param accountID
 */
public void callTransfer(String addr, int callID, int accountID);
获取所有通话信息¶
/**
 * 获取所有通话信息,通过ISipEvent.onUpdateCallInfo(List<CallInfo> callList);接口返回
 */
public void getAllCallInfo();
是否在通话中¶
/**
 * 是否在通话中
 * @return
 */
public boolean isInCalling();
切换摄像头¶
/**
 * 切换摄像头
 * @param toFront true=切换到前置摄像头  false=切换到后置摄像头
 */
public void cameraSwitch(boolean toFront);
关闭视频¶
/**
 * 关闭视频:在视频通话时,去掉视频,只保留语音通话
 */
public void closeVideo();
打开视频¶
/**
 * 打开视频,在进行语音通话时,增加视频
 */
public void openVideo();