Android

一、集成指南

适用范围

本集成文档适用于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账号

示例代码:

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

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

示例代码:

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

示例代码:

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

1.4 上线

示例代码:

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

1.5 实例化视频显示View

示例代码:

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

1.6 打开本地摄像头采集

示例代码:

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

1.7 呼叫其他人

示例代码:

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

1.8 取消呼叫他人/挂断

示例代码:

对方将收到onRTCEndCall()回调

1.9 拒绝他人呼叫

示例代码:

对方将收到onRTCRejectCall()回调

2.0 接受他人呼叫

示例代码:

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

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

示例代码:

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

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

示例代码:

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

2.3 下线

示例代码:

下线后将收不到任何呼叫

2.4 释放ARCall对象

示例代码:

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

2.5 权限说明

使用ARCall SDK需以下权限

2.6 混淆配置

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

三 、API接口文档

ARCallEngine 类

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

定义

参数

参数名

类型

描述

context

Context

上下文对象

appId

String

appId

token

String

token

说明

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

2. 配置私有云

定义

参数

参数名

类型

描述

address

String

私有云服务地址

port

int

私有云服务端口

说明

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

3. 获取SDK版本号

定义

返回值

SDK版本号

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

定义

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

定义

6. 设置日志显示级别

定义

参数

参数名

类型

描述

logLevel

ARLogLevel

日志显示级别

ARCallOption 配置类

1. 获取配置类

定义

2. 设置可配置参数

定义

参数

参数名

类型

描述

isDefaultFrontCamera

boolean

是否默认前置摄像头 true 前置 false 后置 默认true

videoOrientation

ARVideoOrientation

视频方向 默认竖直

videoProfile

ARVideoProfile

视频分辨率 默认360x640

videoFps

ARVideoFrameRate

视频帧率 默认15帧

说明

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

ARCallKit 类

1. 实例化ARCallKit对象

定义

参数

参数名

类型

描述

arCallEvent

ARCallEvent

回调实现类

说明

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

2. 设置token验证

定义

参数

参数名

类型

描述

userToken

String

token字符串:客户端向自己服务器申请

说明

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

3. 上线

定义

参数

参数名

类型

描述

userId

String

用户的userid(必填)

userData

String

用户自定义数据

返回值

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

4. 下线

定义

5. 发起P2P呼叫

定义

参数

参数名

类型

描述

userId

String

用户的userid(必填)

option

ARUserOption

呼叫个人配置类

返回值

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

6. 发起群组呼叫

定义

参数

参数名

类型

描述

groupId

String

群组呼叫的会议id(必填)

groupOption

ARGroupOption

呼叫群组配置类

返回值

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

7. 发起坐席呼叫

定义

参数

参数名

类型

描述

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. 邀请用户参与呼叫

定义

参数

参数名

类型

描述

userId

String

用户的userid(必填)

返回值

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

说明

用于群组呼叫中

9. 挂断呼叫

定义

参数

参数名

类型

描述

userId

String

用户的userid(必填)

10. 接受呼叫申请

定义

参数

参数名

类型

描述

userId

String

用户的userid(必填)

返回值

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

11. 拒绝呼叫申请

定义

参数

参数名

类型

描述

userId

String

用户的userid(必填)

12. 群组呼叫设置Zoom模式

定义

参数

参数名

类型

描述

mode

ARMeetZoomMode

Zoom下的几个模式(必填)

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

定义

参数

参数名

类型

描述

nPages

int

当前视频分页页数(必填,从0开始)

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

定义

参数

参数名

类型

描述

nIdx

int

当前视频分页页数(必填,从0开始)

showNum

int

当前页显示视频个数(必填)

15. 呼叫手机号

定义

16. 呼叫分机号

定义

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

定义

参数

参数名

类型

描述

render

long

底层视频渲染对象

返回值

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

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

定义

参数

参数名

类型

描述

render

long

底层视频渲染对象

返回值

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

19. 设置其他人视频窗口

定义

参数

参数名

类型

描述

peerId

String

RTC服务生成的用户标识Id

render

long

SDK底层视频显示对象

说明

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

20. 发送消息

定义

参数

参数名

类型

描述

userId

String

用户id,不能为空,否则发送失败;

content

String

消息内容(最大1024字节)不能为空,否则发送失败;

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

定义

参数

参数名

类型

描述

enable

boolean

打开或关闭本地音频传输

说明

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

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

定义

参数

参数名

类型

描述

enable

boolean

打开或关闭本地视频传输

说明

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

23. 切换前后摄像头

定义

24. 抓拍对方图片

定义

参数

参数名

类型

描述

fileName

String

文件名

说明

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

25. 开始录制对方视频

定义

参数

参数名

类型

描述

fileName

String

录像保存文件的全路径

说明

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

25. 停止录制对方视频

定义

27. 停止本地摄像头采集

定义

28. 切换至音频模式

定义

29. 是否开启云端录像

定义

参数

参数名

类型

描述

enable

boolean

是否开启

30. 设置客服是否可用

定义

参数

参数名

类型

描述

enable

boolean

是否可用

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

定义

参数

参数名

类型

描述

channelId

String

频道ID

arClertOption

ARClertOption

坐席配置类

说明

ARClertOption类参数说明

参数名

类型

描述

level

int

优先级:0等级最大,值越大,等级越小

area

String

服务地区

business

String

服务范围

32. 销毁ARCallKit对象

定义

ARCallEvent 回调类

1. 服务连接成功

定义

2. 服务连接断开

定义

参数

参数名

类型

描述

code

int

响应码

3. 加入房间成功

定义

参数

参数名

类型

描述

meetId

String

房间号

说明

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

4. 收到呼叫

定义

参数

参数名

类型

描述

userId

String

呼叫的用户ID

callMode

ARCallMode

呼叫模式

userData

String

呼叫用户自定义数据

extend

String

呼叫自定义数据

5. 对方接受呼叫

定义

参数

参数名

类型

描述

userId

String

被呼叫用户的id

6. 对方拒绝呼叫

定义

参数

参数名

类型

描述

userId

String

被呼叫用户的id

code

int

状态码

7. 对方挂断呼叫

定义

参数

参数名

类型

描述

userId

String

被呼叫用户的id

code

int

状态码

8. 是否支持sip呼叫

定义

参数

参数名

类型

描述

bPstn

Boolean

是否支持手机呼叫

bExtension

Boolean

是否支持座机分机呼叫

bNull

Boolean

拓展使用,暂时无用

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

定义

10. 收到消息

定义

参数

参数名

类型

描述

userId

String

对方Id

message

String

消息内容

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

定义

参数

参数名

类型

描述

userId

String

RTC服务生成的用户标识Id

vidRenderId

String

RTC服务生成的视频通道Id

userData

String

用户的自定义数据

说明

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

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

定义

参数

参数名

类型

描述

userId

String

RTC服务生成的用户标识Id

vidRenderId

String

RTC服务生成的视频通道Id

说明

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

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

定义

参数

参数名

类型

描述

userId

String

RTC服务生成的用户标识Id

userData

String

用户的自定义数据

说明

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

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

定义

参数

参数名

类型

描述

userId

String

RTC服务生成的用户标识Id

说明

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

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

定义

参数

参数名

类型

描述

userId

String

RTC服务生成的用户标识Id

level

int

声音音量

time

int

监测时间监测(单位:毫秒)

说明

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

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

定义

参数

参数名

类型

描述

level

int

声音音量

time

int

监测时间监测(单位:毫秒)

说明

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

17. 远端网络监测回调

定义

参数

参数名

类型

描述

userId

String

RTC服务生成的用户标识Id

netSpeed

int

当前PeerUserId的网络带宽

packetLost

int

当前PeerUserId的丢包率

netQuality

ARNetQuality

当前PeerUserId的丢包率

说明

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

18. 本地网络监测回调

定义

参数

参数名

类型

描述

netSpeed

int

当前PeerUserId的网络带宽

packetLost

int

当前PeerUserId的丢包率

netQuality

ARNetQuality

当前PeerUserId的丢包率

说明

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

19. Zoom模式状态回调

定义

参数

参数名

类型

描述

zoomMode

ARMeetZoomMode

当前的Zoom模式

allPages

int

Zoom模式视频的分页总页数

curPage

int

Zoom模式视频的当前页数

allRender

int

Zoom模式视频的当前页的视频总数

scrnBeginIdx

int

Zoom模式视频的当前页的视频个数索引

num

int

Zoom模式视频的总数目

说明

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

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

定义

参数

参数名

类型

描述

userId

String

用户标识Id

vidRenderId

String

RTC服务生成的视频通道Id

userData

String

用户的自定义数据

说明

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

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

定义

参数

参数名

类型

描述

userId

String

用户标识Id

vidRenderId

String

RTC服务生成的视频通道Id

说明

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

22. 当前排队人数

定义

参数

参数名

类型

描述

nQueueNum

int

当前排队人数

说明

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

23. 坐席状态

定义

参数

参数名

类型

描述

nQueueNum

int

排队人数

nAllClerk

int

总坐席数

nWorkingClerk

int

正在工作中座席数

说明

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

24. 音视频状态回调

定义

参数

参数名

类型

描述

peerId

String

RTC服务生成,用来标识用户的Id

bAudio

boolean

音频打开或关闭

bVideo

boolean

视频打开或关闭

四、更新日志

  • v 3.1.0

  • 增加onRTCJoinRoomOk回调

  • 去除onRTCMakeCall回调中第一个MeetId参数

  • turnOn方法增加userData参数

  • ARUserOption等配置类中去除userData参数

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

Last updated

Was this helpful?