一、集成指南

适用范围

本集成文档适用于Android ARCall SDK 3.0.0+版本。

准备环境

  • Android Studio 2.1或以上版本
  • Android 版本不低于 4.0.3 且支持音视频的 Android 设备(不支持模拟器)
  • Android 设备已经连接到有效网络

导入SDK

Gradle方式导入 Download

添加Jcenter仓库 Gradle依赖:

dependencies {
   compile 'org.ar:arcall_kit:3.1.7'(最新版见上面图标版本号)
}

或者 Maven

<dependency>
  <groupId>org.ar</groupId>
  <artifactId>3.1.7</version>
  <type>pom</type>
</dependency>

二、开发指南

集成SDK后,还需对SDK进行初始化操作,建议在Application中完成。

1.1 初始化SDK并配置开发者信息

调用 initEngine() 方法配置开发者信息,开发者信息可在anyRTC管理后台中获得,详见创建anyRTC账号

示例代码:

public class ARApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ARCallEngine.Inst().initEngine(getApplicationContext(),  "AppId",  "AppToken");
    }
}

自定义的Application需在AndroidManifest.xml注册

1.2 获取配置类并设置相关配置

示例代码:

//获取ARCall配置类
ARCallOption option=ARCallEngine.Inst().getARCallOption();
option.setVideoProfile(ARVideoCommon.ARVideoProfile.ARVideoProfile480x640);
option.setVideoFps(ARVideoCommon.ARVideoFrameRate.ARVideoFrameRateFps20);

1.3 实例化Call对象并设置回调

示例代码:

ARCallKit arCallKit = new ARCallKit();
arCallKit.setArCallEvent(ARCallEvent arCallEvent);

建议写成单例模式,具体参照demo

1.4 上线

示例代码:

 //上线
if (arCallKit.isTurnOff()) {
    arCallKit.turnOn("userId","userData");
}

上线成功会回调onConnected(),失败会回调onDisconnect(),程序启动只需调用一次即可

1.5 实例化视频显示View

示例代码:

ARVideoView videoView = new ARVideoView(rl_video,  ARCallEngine.Inst().Egl(),this,false);

videoView.setVideoViewLayout(true,Gravity.CENTER, LinearLayout.VERTICAL);

ARVideoView 对象是显示视频,调整视频窗口摆放位置的类,可由开发者自定义,具体可参照Demo

1.6 打开本地摄像头采集

示例代码:

arCallKit.setLocalVideoCapturer(videoView.openLocalVideoRender().GetRenderPointer());

注意安卓动态权限处理,这里需要录音和摄像头权限

1.7 呼叫其他人

示例代码:

//主动呼叫
arCallKit.makeCallUser(String callId,ARUserOption option);

返回值为1时呼叫成功,被呼叫人会收到onRTCMakeCall()回调

1.8 取消呼叫他人/挂断

示例代码:

arCallKit.endCall(callId);
//如果打开了本地摄像头,还应调用
arCallKit.stopCapturer();

对方将收到onRTCEndCall()回调

1.9 拒绝他人呼叫

示例代码:

arCallKit.rejectCall(callId);

对方将收到onRTCRejectCall()回调

2.0 接受他人呼叫

示例代码:

arCallKit.accpetCall(callId);

接受呼叫后,双方呼叫通道开启,将回调onRTCOpenRemoteVideoRender()方法,在该回调中设置显示对方视频,参考 2.1

2.1 呼叫接通后对方视频即将显示

示例代码:

//显示对方视频
final VideoRenderer render = mVideoView.openRemoteVideoRender(strVidRenderId);
if (null != render) {
    arCallKit.setRTCRemoteVideoRender(strVidRenderId, render.GetRenderPointer());
}

对方同意通话后会回调onRTCOpenRemoteVideoRender()方法,在该回调中应显示对方视频,参照上述代码,具体可查看demo

2.2 呼叫挂断后对方视频即将关闭

示例代码:

//移除对方视频
arVideoView.removeRemoteRender(strVidRenderId);
arCallKit.setRTCRemoteVideoRender(strVidRenderId,0);

对方挂断通话后会回调onRTCCloseRemoteVideoRender()方法,在该回调中应移除对方视频,参照上述代码,具体可查看demo

2.3 下线

示例代码:

//下线
arCallKit.turnOff();

下线后将收不到任何呼叫

2.4 释放ARCall对象

示例代码:

 arCallKit.clear();

如果不希望程序在退出后,还受到呼叫请求,则彻底释放对象并下线

2.5 权限说明

使用ARCall SDK需以下权限

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

2.6 混淆配置

在Proguard混淆文件中增加以下配置:

-dontwarn org.ar.**
-keep class org.ar.**{*;}
-dontwarn org.webrtc.**
-keep class org.webrtc.**{*;}

三 、API接口文档

ARCallEngine 类

1. 初始化并配置开发者信息

定义

void initEngine(Context context, String appId, String token)

参数

参数名 类型 描述
context Context 上下文对象
appId String appId
token String token

说明

该方法为配置开发者信息,上述参数均可在https://www.anyrtc.io/ 应用管理中获得;建议在Application调用。

2. 配置私有云

定义

void configServerForPriCloud(String address,int port)

参数

参数名 类型 描述
address String 私有云服务地址
port int 私有云服务端口

说明

配置私有云信息,当使用私有云时才需要进行配置,默认无需配置。

3. 获取SDK版本号

定义

String getSdkVersion()

返回值

SDK版本号

4. 关闭硬解码(安卓特有)

定义

void disableHWDecode()

5. 关闭硬编码(安卓特有)

定义

void disableHWEncode()

6. 设置日志显示级别

定义

void setLogLevel(ARLogLevel logLevel)

参数

参数名 类型 描述
logLevel ARLogLevel 日志显示级别

ARCallOption 配置类

1. 获取配置类

定义

ARCallOption option = ARCallEngine.Inst().getARCallOption()

2. 设置可配置参数

定义

void setOptionParams(boolean isDefaultFrontCamera, ARVideoCommon.ARVideoOrientation mScreenOriention, ARVideoCommon.ARVideoProfile videoProfile, ARVideoCommon.ARVideoFrameRate videoFps)

参数

参数名 类型 描述
isDefaultFrontCamera boolean 是否默认前置摄像头 true 前置 false 后置 默认true
videoOrientation ARVideoOrientation 视频方向 默认竖直
videoProfile ARVideoProfile 视频分辨率 默认360x640
videoFps ARVideoFrameRate 视频帧率 默认15帧

说明

可通过上面方法配置,也可单独设置


ARCallKit 类

1. 实例化ARCallKit对象

定义

ARCallKit arCallKit = new ARCallKit(ARCallEvent arCallEvent)

参数

参数名 类型 描述
arCallEvent ARCallEvent 回调实现类

说明

也有无参构造方法,在实例化之后必须设置调用 setArCallEvent(ARCallEvent arCallEvent) 方法设置回调

2. 设置token验证

定义

boolean setUserToken(String userToken)

参数

参数名 类型 描述
userToken String token字符串:客户端向自己服务器申请

说明

设置token验证必须放上线之前

3. 上线

定义

boolean turnOn(String userId,Stirng userData)

参数

参数名 类型 描述
userId String 用户的userid(必填)
userData String 用户自定义数据

返回值

ture/false 上线成功/上线失败

4. 下线

定义

void turnOff()

5. 发起P2P呼叫

定义

int makeCallUser(String userId, ARUserOption option )

参数

参数名 类型 描述
userId String 用户的userid(必填)
option ARUserOption 呼叫个人配置类

返回值

-5/-4/-3/-2/-1/0/1:userId为空字符串/正在通话中,呼叫失败/MemberList为空/不能自己呼叫自己/操作频繁/呼叫失败(没有RECORD_AUDIO权限)/呼叫成功

6. 发起群组呼叫

定义

int makeCallGroup(String groupId, ARGroupOption groupOption)

参数

参数名 类型 描述
groupId String 群组呼叫的会议id(必填)
groupOption ARGroupOption 呼叫群组配置类

返回值

-5/-4/-3/-2/-1/0/1:userId为空字符串/正在通话中,呼叫失败/MemberList为空/不能自己呼叫自己/操作频繁/呼叫失败(没有RECORD_AUDIO权限)/呼叫成功

7. 发起坐席呼叫

定义

int makeCallQueue(String queueId, ARQueueOption arQueueOption)

参数

参数名 类型 描述
queueId String 呼叫坐席的频道id(必填)
arQueueOption ARQueueOption 呼叫坐席配置类

返回值

-5/-4/-3/-2/-1/0/1:userId为空字符串/正在通话中,呼叫失败/MemberList为空/不能自己呼叫自己/操作频繁/呼叫失败(没有RECORD_AUDIO权限)/呼叫成功

说明

ARQueueOption类参数说明

参数名 类型 描述
callMode ARCallMode 呼叫模式(该模式呼叫只能用call_cit_audio , call_cit_video 两种)
level int 优先级:0等级最大,值越大,等级越小
area String 服务地区
business String 服务范围

8. 邀请用户参与呼叫

定义

int inviteCall(String userId)

参数

参数名 类型 描述
userId String 用户的userid(必填)

返回值

0/1:失败(没有RECORD_AUDIO权限)/成功

说明

用于群组呼叫中

9. 挂断呼叫

定义

void endCall( String userId)

参数

参数名 类型 描述
userId String 用户的userid(必填)

10. 接受呼叫申请

定义

int accpetCall(String userId)

参数

参数名 类型 描述
userId String 用户的userid(必填)

返回值

0/1:失败(没有RECORD_AUDIO权限)/成功

11. 拒绝呼叫申请

定义

void rejectCall( String userId)

参数

参数名 类型 描述
userId String 用户的userid(必填)

12. 群组呼叫设置Zoom模式

定义

void setZoomMode( ARMeetZoomMode mode)

参数

参数名 类型 描述
mode ARMeetZoomMode Zoom下的几个模式(必填)

13. Zoom模式下设置当前视频页数

定义

void setZoomPage( int nPages)

参数

参数名 类型 描述
nPages int 当前视频分页页数(必填,从0开始)

14. Zoom模式下设置当前页数id及显示个数

定义

void setZoomPageIdx( int nIdx, int showNum)

参数

参数名 类型 描述
nIdx int 当前视频分页页数(必填,从0开始)
showNum int 当前页显示视频个数(必填)

15. 呼叫手机号

定义

void switchToPstn()

16. 呼叫分机号

定义

void switchToExtension()

17. 设置本地视频采集窗口

定义

int setLocalVideoCapturer(long render)

参数

参数名 类型 描述
render long 底层视频渲染对象

返回值

0/1/2/3:没有相机权限/打开成功/打开相机失败/相机已打开, 未释放

18. 重启本地视频采集窗口

定义

int restartLocalVideoCapturer(long render)

参数

参数名 类型 描述
render long 底层视频渲染对象

返回值

0/1/2/3:没有相机权限/打开成功/打开相机失败/相机已打开, 未释放

19. 设置其他人视频窗口

定义

void setRTCRemoteVideoRender(String peerId,long render)

参数

参数名 类型 描述
peerId String RTC服务生成的用户标识Id
render long SDK底层视频显示对象

说明

该方法用于视频呼叫接通后,回调(OnRTCOpenRemoteVideoRender)使用

20. 发送消息

定义

void sendMessage(String userId,  String content)

参数

参数名 类型 描述
userId String 用户id,不能为空,否则发送失败;
content String 消息内容(最大1024字节)不能为空,否则发送失败;

21. 设置本地音频是否传输

定义

void setLocalAudioEnable(boolean enabled)

参数

参数名 类型 描述
enable boolean 打开或关闭本地音频传输

说明

true为传输音频,false为不传输音频,默认传输

22. 设置本地视频是否传输

定义

void setLocalVideoEnable(boolean enabled)

参数

参数名 类型 描述
enable boolean 打开或关闭本地视频传输

说明

true为传输视频,false为不传输视频,默认视频传输

23. 切换前后摄像头

定义

void switchCamera()

24. 抓拍对方图片

定义

int snapPicture(String fileName)

参数

参数名 类型 描述
fileName String 文件名

说明

抓拍视频一帧作为图片,需注意安卓动态权限处理

25. 开始录制对方视频

定义

int startRecordVideo( String filePath)

参数

参数名 类型 描述
fileName String 录像保存文件的全路径

说明

录取一段视频,需注意安卓动态权限处理

25. 停止录制对方视频

定义

void stopRecordVideo()

27. 停止本地摄像头采集

定义

void stopCapturer()

28. 切换至音频模式

定义

void swtichToAudioMode()

29. 是否开启云端录像

定义

 void setCloudRecord( boolean enable)

参数

参数名 类型 描述
enable boolean 是否开启

30. 设置客服是否可用

定义

void setAvalible( boolean enable)

参数

参数名 类型 描述
enable boolean 是否可用

31. 设置客服频道ID,服务区域

定义

void setAsClerk( String channelId,  ARClertOption arClertOption)

参数

参数名 类型 描述
channelId String 频道ID
arClertOption ARClertOption 坐席配置类

说明

ARClertOption类参数说明

参数名 类型 描述
level int 优先级:0等级最大,值越大,等级越小
area String 服务地区
business String 服务范围

32. 销毁ARCallKit对象

定义

void clear()

ARCallEvent 回调类

1. 服务连接成功

定义

void onConnected()

2. 服务连接断开

定义

void onDisconnect(int code)

参数

参数名 类型 描述
code int 响应码

3. 加入房间成功

定义

void onRTCJoinRoomOk(String meetId)

参数

参数名 类型 描述
meetId String 房间号

说明

只有打开VIP或呼叫类型是AR_Call_Meet_Invite的时候才有回调,roomId参数仅供录像时使用。

4. 收到呼叫

定义

void onRTCMakeCall( String userId, ARCallMode callMode, String userData, String extend)

参数

参数名 类型 描述
userId String 呼叫的用户ID
callMode ARCallMode 呼叫模式
userData String 呼叫用户自定义数据
extend String 呼叫自定义数据

5. 对方接受呼叫

定义

void onRTCAcceptCall(String userId)

参数

参数名 类型 描述
userId String 被呼叫用户的id

6. 对方拒绝呼叫

定义

void onRTCRejectCall(String userId, int code)

参数

参数名 类型 描述
userId String 被呼叫用户的id
code int 状态码

7. 对方挂断呼叫

定义

 void onRTCEndCall(String userId, int code)

参数

参数名 类型 描述
userId String 被呼叫用户的id
code int 状态码

8. 是否支持sip呼叫

定义

 void onRTCSipSupport(boolean bPstn, boolean bExtension, boolean bNull)

参数

参数名 类型 描述
bPstn Boolean 是否支持手机呼叫
bExtension Boolean 是否支持座机分机呼叫
bNull Boolean 拓展使用,暂时无用

9. 对方切换到音频通话模式

定义

void onRTCSwithToAudioMode()

10. 收到消息

定义

void onRTCUserMessage(String userId, String message)

参数

参数名 类型 描述
userId String 对方Id
message String 消息内容

11. 对方视频接通视频即将显示回调

定义

void onRTCOpenRemoteVideoRender(String userId, String vidRenderId, String userData);

参数

参数名 类型 描述
userId String RTC服务生成的用户标识Id
vidRenderId String RTC服务生成的视频通道Id
userData String 用户的自定义数据

说明

开发者需调用设置其他与会者视频窗口(setRemoteVideoRender)方法。

12. 对方视频挂断视频即将关闭回调

定义

void onRTCCloseRemoteVideoRender(String userId, String vidRenderId);

参数

参数名 类型 描述
userId String RTC服务生成的用户标识Id
vidRenderId String RTC服务生成的视频通道Id

说明

主叫与被叫的挂断后将会回调此方法。此时应将视频窗口移除

13. 对方音频通道打开回调

定义

void onRTCOpenRemoteAudioTrack(String userId, String userData);

参数

参数名 类型 描述
userId String RTC服务生成的用户标识Id
userData String 用户的自定义数据

说明

对方同意后,音频通道建立成功回调此方法。

14. 对方音频通道关闭回调

定义

void onRTCCloseRemoteAudioTrack(String userId);

参数

参数名 类型 描述
userId String RTC服务生成的用户标识Id

说明

主叫与被叫的挂断后音频通道断开,将会回调此方法。

15. 远端音量实时监测回调

定义

void onRTCRemoteAudioActive(String userId, int level, int time);

参数

参数名 类型 描述
userId String RTC服务生成的用户标识Id
level int 声音音量
time int 监测时间监测(单位:毫秒)

说明

打开音频实时监测的情况下,回调该方法

16. 本地音量实时监测回调

定义

void onRTCLocalAudioActive(int level, int time);

参数

参数名 类型 描述
level int 声音音量
time int 监测时间监测(单位:毫秒)

说明

打开音频实时监测的情况下,回调该方法

17. 远端网络监测回调

定义

void onRTCRemoteNetworkStatus(String userId, int netSpeed, int packetLost, ARNetQuality netQuality);

参数

参数名 类型 描述
userId String RTC服务生成的用户标识Id
netSpeed int 当前PeerUserId的网络带宽
packetLost int 当前PeerUserId的丢包率
netQuality ARNetQuality 当前PeerUserId的丢包率

说明

打开实时网络监测开关后,回调此方法。

18. 本地网络监测回调

定义

void onRTCLocalNetworkStatus(int netSpeed, int packetLost, ARNetQuality netQuality);

参数

参数名 类型 描述
netSpeed int 当前PeerUserId的网络带宽
packetLost int 当前PeerUserId的丢包率
netQuality ARNetQuality 当前PeerUserId的丢包率

说明

打开实时网络监测开关后,回调此方法。

19. Zoom模式状态回调

定义

void onRTCZoomPageInfo(ARMeetZoomMode zoomMode, int allPages, int curPage, int allRender, int scrnBeginIdx, int num);

参数

参数名 类型 描述
zoomMode ARMeetZoomMode 当前的Zoom模式
allPages int Zoom模式视频的分页总页数
curPage int Zoom模式视频的当前页数
allRender int Zoom模式视频的当前页的视频总数
scrnBeginIdx int Zoom模式视频的当前页的视频个数索引
num int Zoom模式视频的总数目

说明

主叫与被叫的挂断后将会回调此方法。此时应将视频窗口移除

20. Zoom模式下用户进去群组呼叫回调

定义

void onRTCUserCome(String userId, String vidRenderId, String userData);

参数

参数名 类型 描述
userId String 用户标识Id
vidRenderId String RTC服务生成的视频通道Id
userData String 用户的自定义数据

说明

群组呼叫模式下, 用户进入群组呼叫回调此方法。

21. Zoom模式下用户离开群组呼叫回调

定义

void onRTCUserOut(String userId, String vidRenderId);

参数

参数名 类型 描述
userId String 用户标识Id
vidRenderId String RTC服务生成的视频通道Id

说明

群组呼叫模式下,用户的离开时回调此方法。

22. 当前排队人数

定义

void onRTCUserCTIStatus(int nQueueNum);

参数

参数名 类型 描述
nQueueNum int 当前排队人数

说明

坐席呼叫模式下,回调此方法。

23. 坐席状态

定义

void onRTCClerkCTIStatus(int nQueueNum,int nAllClerk, int nWorkingClerk);

参数

参数名 类型 描述
nQueueNum int 排队人数
nAllClerk int 总坐席数
nWorkingClerk int 正在工作中座席数

说明

坐席呼叫模式下,回调此方法。。

24. 音视频状态回调

定义

void onRTCAVStatus(String peerId, boolean bAudio, boolean bVideo);

参数

参数名 类型 描述
peerId String RTC服务生成,用来标识用户的Id
bAudio boolean 音频打开或关闭
bVideo boolean 视频打开或关闭

四、更新日志

  • v 3.1.0
  • 增加onRTCJoinRoomOk回调
  • 去除onRTCMakeCall回调中第一个MeetId参数
  • turnOn方法增加userData参数
  • ARUserOption等配置类中去除userData参数

  • 全新发布,替代老的P2P SDK,功能升级,全面优化

© 2016-2019 铂渊信息技术(上海)有限公司 all right reserved,powered by Gitbook该文件修订时间: 2020-07-29 12:20:25

results matching ""

    No results matching ""