被 com.juphoon.cloud.JCCallImpl 继承.

class  CallParam
 
class  MediaConfig
 

Public 成员函数

abstract boolean call (String userId, boolean video, @Nullable CallParam callParam)
 
abstract boolean term (@NonNull JCCallItem item, @CallReason int reason, String description)
 
abstract boolean answer (@NonNull JCCallItem item, boolean video)
 
abstract boolean mute (@NonNull JCCallItem item)
 
abstract boolean hold (@NonNull JCCallItem item)
 
abstract boolean audioRecord (@NonNull JCCallItem item, boolean enable, String filePath)
 
abstract boolean videoRecord (@NonNull JCCallItem item, boolean enable, boolean remote, int width, int height, String filePath, boolean bothAudio)
 
abstract boolean becomeActive (@NonNull JCCallItem item)
 
abstract boolean enableUploadVideoStream (@NonNull JCCallItem item)
 
abstract List< JCCallItemgetCallItems ()
 
abstract JCCallItem getActiveCallItem ()
 
abstract boolean sendMessage (@NonNull JCCallItem item, String type, String content)
 
abstract String getStatistics ()
 
abstract void updateMediaConfig (@NonNull MediaConfig mediaConfig)
 
abstract MediaConfig getMediaConfig ()
 
abstract boolean sendDtmf (@NonNull JCCallItem item, @DtmfValue int value)
 

静态 Public 成员函数

static JCCall create (@NonNull JCClient client, @NonNull JCMediaDevice mediaDevice, @NonNull JCCallCallback callback)
 
static void destroy ()
 

Public 属性

int maxCallNum = 1
 
boolean termWhenNetDisconnected = false
 

静态 Public 属性

static final int DIRECTION_IN = 0
 
static final int DIRECTION_OUT = 1
 
static final int REASON_NONE = 0
 
static final int REASON_NOT_LOGIN = 1
 
static final int REASON_CALL_FUNCTION_ERROR = 2
 
static final int REASON_TIMEOUT = 3
 
static final int REASON_NETWORK = 4
 
static final int REASON_OVER_LIMIT = 5
 
static final int REASON_TERM_BY_SELF = 6
 
static final int REASON_ANSWER_FAIL = 7
 
static final int REASON_BUSY = 8
 
static final int REASON_DECLINE = 9
 
static final int REASON_USER_OFFLINE = 10
 
static final int REASON_NOT_FOUND = 11
 
static final int REASON_REJECT_VIDEO_WHEN_HAS_CALL = 12
 
static final int REASON_REJECT_WHEN_HAS_VIDEO_CALL = 13
 
static final int REASON_SESSION_TIMEOUT = 14
 
static final int REASON_OTHER = 100
 
static final int STATE_INIT = 0
 
static final int STATE_PENDING = 1
 
static final int STATE_CONNECTING = 2
 
static final int STATE_TALKING = 3
 
static final int STATE_OK = 4
 
static final int STATE_CANCEL = 5
 
static final int STATE_CANCELED = 6
 
static final int STATE_MISSED = 7
 
static final int STATE_ERROR = 8
 
static final int NET_STATUS_NA = -100
 
static final int NET_STATUS_DISCONNECTED = -3
 
static final int NET_STATUS_VERY_BAD = -2
 
static final int NET_STATUS_BAD = -1
 
static final int NET_STATUS_NORMAL = 0
 
static final int NET_STATUS_GOOD = 1
 
static final int NET_STATUS_VERY_GOOD = 2
 
static final int DTMF_0 = MtcCallConstants.EN_MTC_CALL_DTMF_0
 
static final int DTMF_1 = MtcCallConstants.EN_MTC_CALL_DTMF_1
 
static final int DTMF_2 = MtcCallConstants.EN_MTC_CALL_DTMF_2
 
static final int DTMF_3 = MtcCallConstants.EN_MTC_CALL_DTMF_3
 
static final int DTMF_4 = MtcCallConstants.EN_MTC_CALL_DTMF_4
 
static final int DTMF_5 = MtcCallConstants.EN_MTC_CALL_DTMF_5
 
static final int DTMF_6 = MtcCallConstants.EN_MTC_CALL_DTMF_6
 
static final int DTMF_7 = MtcCallConstants.EN_MTC_CALL_DTMF_7
 
static final int DTMF_8 = MtcCallConstants.EN_MTC_CALL_DTMF_8
 
static final int DTMF_9 = MtcCallConstants.EN_MTC_CALL_DTMF_9
 
static final int DTMF_STAR = MtcCallConstants.EN_MTC_CALL_DTMF_STAR
 
static final int DTMF_POUND = MtcCallConstants.EN_MTC_CALL_DTMF_POUND
 
static final int DTMF_A = MtcCallConstants.EN_MTC_CALL_DTMF_A
 
static final int DTMF_B = MtcCallConstants.EN_MTC_CALL_DTMF_B
 
static final int DTMF_C = MtcCallConstants.EN_MTC_CALL_DTMF_C
 
static final int DTMF_D = MtcCallConstants.EN_MTC_CALL_DTMF_D
 

详细描述

用于管理一对一通话

成员函数说明

◆ create()

static JCCall com.juphoon.cloud.JCCall.create ( @NonNull JCClient  client,
@NonNull JCMediaDevice  mediaDevice,
@NonNull JCCallCallback  callback 
)
inlinestatic

创建 JCCall 对象

JCCall 的所有接口函数,如无特殊说明,都建议在主线程调用

注解
  • 调用此方法创建 JCCall 对象后,期间没有调用过 destroy 方法销毁对象,然后又重复调用此方法,会直接返回第一次创建的 JCCall 对象
  • 调用此方法前确保 JCClient 已完成初始化,即 getState 方法获取的状态值不等于 STATE_NOT_INIT
参数
clientJCClient 对象
mediaDeviceJCMediaDevice 对象,通过 JCMediaDevice.create 方法创建
callbackJCCallCallback 对象,用于回调相关通知
返回
JCCall 对象
异常
JCClient、JCMediaDevice、JCCallCallback 任意参数传空就会抛出异常

◆ destroy()

static void com.juphoon.cloud.JCCall.destroy ( )
inlinestatic

销毁 JCCall 对象

该方法为同步调用,需要等待 JCCall 实例资源释放后才能执行其他操作,调用此方法后,你将无法再使用 JCCall 的其它方法和回调。
我们 不建议 在 JCSDK 的回调中调用此方法销毁 JCCall 对象,有可能会出现崩溃。
如需在销毁后再次创建 JCCall 实例,需要等待 destroy 方法执行结束后再创建实例。

◆ call()

abstract boolean com.juphoon.cloud.JCCall.call ( String  userId,
boolean  video,
@Nullable CallParam  callParam 
)
abstract

发起一对一呼叫

若发起的是音频呼叫,需要保证本地不存视频通话,并且本地通话数未达到最大通话数,最大通话数为:maxCallNum
若发起的是视频呼叫,需要保证本地不存在通话。
发起呼叫成功后,会收到 onCallItemAdd 通知

以下两种情况会收到 onCallItemRemove 通知:

  • 本端发起视频呼叫时,对方已存在通话
  • 本端发起音频呼叫时,对方已存在视频通话
注解
在调用此接口时确保用户的登录状态为已登录
参数
userId对方的用户标识,不能为空
video是否视频呼叫
  • true: 视频呼叫
  • false: 音频呼叫
callParam通话参数对象,此参数可为空,详细定义见: CallParam
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ term()

abstract boolean com.juphoon.cloud.JCCall.term ( @NonNull JCCallItem  item,
@CallReason int  reason,
String  description 
)
abstract

挂断

参数
itemJCCallItem 对象,不能为空,并且本地缓存的通话列表中要包含此对象
reason挂断原因,参见:挂断原因
description挂断描述
返回
是否正常调用

◆ answer()

abstract boolean com.juphoon.cloud.JCCall.answer ( @NonNull JCCallItem  item,
boolean  video 
)
abstract

接听

调用接口成功会收到 onCallItemUpdate 通知, 另外还有两种情况也会收到通知:1、若收到的是视频呼叫,而本端选择了音频接听 2、若此路通话不是活跃的,会将此路通话设为活跃通话。
调用接口失败会收到 onCallItemRemove 通知

参数
itemJCCallItem 对象,不能为空,并且本地缓存的通话列表中要包含此对象
video针对视频呼入可以选择以视频接听还是音频接听
  • true: 视频接听
  • false: 音频接听
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ mute()

abstract boolean com.juphoon.cloud.JCCall.mute ( @NonNull JCCallItem  item)
abstract

开启/取消静音

开启后对端将听不到本端的声音。内部会根据 getMute 来决定开启/取消静音

  • getMute 为 true,即静音状态时: 取消静音
  • getMute 为 false,即不是静音状态时: 开启静音
参数
itemJCCallItem 对象,不能为空,并且本地缓存的通话列表中要包含此对象,此对象的通话状态必须为通话中
返回
是否正常调用
  • true:正常执行调用流程,会收到 onCallItemUpdate 通知
  • false:调用失败,不会收到通知

◆ hold()

abstract boolean com.juphoon.cloud.JCCall.hold ( @NonNull JCCallItem  item)
abstract

开启/取消呼叫保持

开启呼叫保持后,通话将被挂起。内部会根据 getHold 来决定开启/取消呼叫保持

  • getHold 为 true,即呼叫保持状态时: 取消呼叫保持
  • getHold 为 false,即不是呼叫保持状态时: 开启呼叫保持
注解
只针对音频,如果是视频通话则要上层处理视频逻辑
参数
itemJCCallItem 对象,不能为空,并且本地缓存的通话列表中要包含此对象,此对象的通话状态必须为通话中
返回
是否正常调用
  • true:正常执行调用流程,会收到 onCallItemUpdate 通知
  • false:调用失败,不会收到通知

◆ audioRecord()

abstract boolean com.juphoon.cloud.JCCall.audioRecord ( @NonNull JCCallItem  item,
boolean  enable,
String  filePath 
)
abstract

开启/关闭通话录音

开启通话录音,需要保证没有在录音也没有在录制视频
关闭通话录音,需要保证当前通话正在录音

参数
itemJCCallItem 对象,不能为空,并且本地缓存的通话列表中要包含此对象
enable开启关闭录音
  • true: 开启录音
  • false: 关闭录音
filePath录音文件的本地保存路径,由用户自行指定,需精确到文件名,例如:/sdcard/emulated/0/audio.wav,请确保目录存在且可写。内部默认以 wav 格式录制
返回
是否正常调用
  • true:正常执行调用流程,会收到 onCallItemUpdate 通知
  • false:调用失败,不会收到通知

◆ videoRecord()

abstract boolean com.juphoon.cloud.JCCall.videoRecord ( @NonNull JCCallItem  item,
boolean  enable,
boolean  remote,
int  width,
int  height,
String  filePath,
boolean  bothAudio 
)
abstract

开启/关闭视频通话录制

开启视频录制,需要保证 1、没有在录音 2、若是录制远端视频,要保证没有在录制远端视频,并且远端在上传视频流 3、若是录制本端视频,要保证没有在录制本端视频,并且本端在上传视频流。
关闭视频录制,需要保证 1、若是关闭远端视频,要保证正在录制远端视频 2、若是关闭本端视频,要保证正在录制本端视频

参数
itemJCCallItem 对象,不能为空,并且本地缓存的通话列表中要包含此对象
enable是否开启视频通话录制
  • true: 开启
  • false: 关闭
remote是否录制远端视频源
  • true: 录制远端视频
  • false: 录制本端视频
width录制视频宽像素
height录制视频高像素
filePath录制视频文件的本地保存路径,由用户自行指定,需精确到文件名及格式,例如:/sdcard/emulated/0/video.mp4。请确保目录存在且可写。
bothAudio是否录制两端音频
  • true: 录制两端音频
  • false: 录制视频端音频。也就是说 remote 为 true 就录制远端音频,remote 为 false 录制本端音频。
返回
是否正常调用
  • true:正常执行调用流程,会收到 onCallItemUpdate 通知
  • false:调用失败,不会收到通知

◆ becomeActive()

abstract boolean com.juphoon.cloud.JCCall.becomeActive ( @NonNull JCCallItem  item)
abstract

切换活跃通话

调用此方法时,入参 JCCallItem 对象不是活跃的,则会收到 onCallItemUpdate 通知;若入参 JCCallItem 对象已是活跃的,则不会收到通知

参数
item需要变为活跃状态的 JCCallItem 对象
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ enableUploadVideoStream()

abstract boolean com.juphoon.cloud.JCCall.enableUploadVideoStream ( @NonNull JCCallItem  item)
abstract

开启/关闭视频流发送

通过 getUploadVideoStreamSelf 来决定开启还是关闭视频流的发送

注解
用于视频通话中
参数
itemJCCallItem 对象
返回
是否正常调用
  • true:正常执行调用流程,会收到 onCallItemUpdate 通知
  • false:调用失败

◆ getCallItems()

abstract List<JCCallItem> com.juphoon.cloud.JCCall.getCallItems ( )
abstract

获得通话对象列表

maxCallNum > 1 时,可能存在多个音频通话对象

返回
通话对象列表

◆ getActiveCallItem()

abstract JCCallItem com.juphoon.cloud.JCCall.getActiveCallItem ( )
abstract

获得当前活跃的通话

返回
  • JCCallItem 对象:当前活跃的通话
  • null:当前没有活跃的通话

◆ sendMessage()

abstract boolean com.juphoon.cloud.JCCall.sendMessage ( @NonNull JCCallItem  item,
String  type,
String  content 
)
abstract

通过通话建立的通道发送数据

此接口调用成功后,消息接收方会收到 onMessageReceive 回调,通过此回调可以获取消息的文本类型和文本内容

参数
item需要发送数据的 JCCallItem 对象
type文本消息类型,用户可以自定义,例如text,xml等
content文本内容
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ getStatistics()

abstract String com.juphoon.cloud.JCCall.getStatistics ( )
abstract

获得当前通话统计信息

统计信息以Json字符串形式返回,其中包含 "Audio"、"Video"、"Mtp" 三个键值

返回
当前通话统计信息

◆ updateMediaConfig()

abstract void com.juphoon.cloud.JCCall.updateMediaConfig ( @NonNull MediaConfig  mediaConfig)
abstract

更新媒体参数

可以通过该方法更新媒体参数以适应不同设备类型,比如视频发送/接收的宽高、音频/视频的最大最小码率等。需要在调用 call 接口发起呼叫前进行设置。

注解
如果此方法入参 MediaConfig 对象的 mode 属性为 MODE_INTELLIGENT_HARDWARE_SMALL,则会将音频输入/输出采样率设为 8000
参数
mediaConfigMediaConfig 媒体参数对象,通过 generateByMode 方法创建

◆ getMediaConfig()

abstract MediaConfig com.juphoon.cloud.JCCall.getMediaConfig ( )
abstract

获得当前的媒体参数

返回
MediaConfig 媒体参数对象

◆ sendDtmf()

abstract boolean com.juphoon.cloud.JCCall.sendDtmf ( @NonNull JCCallItem  item,
@DtmfValue int  value 
)
abstract

发送DTMF信息

参数
item需要发送数据的 JCCallItem 对象
valueDTMF值
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

类成员变量说明

◆ DIRECTION_IN

final int com.juphoon.cloud.JCCall.DIRECTION_IN = 0
static

呼入

◆ DIRECTION_OUT

final int com.juphoon.cloud.JCCall.DIRECTION_OUT = 1
static

呼出

◆ STATE_INIT

final int com.juphoon.cloud.JCCall.STATE_INIT = 0
static

初始

◆ STATE_PENDING

final int com.juphoon.cloud.JCCall.STATE_PENDING = 1
static

振铃

◆ STATE_CONNECTING

final int com.juphoon.cloud.JCCall.STATE_CONNECTING = 2
static

连接中

◆ STATE_TALKING

final int com.juphoon.cloud.JCCall.STATE_TALKING = 3
static

通话中

◆ STATE_OK

final int com.juphoon.cloud.JCCall.STATE_OK = 4
static

通话正常结束

◆ STATE_CANCEL

final int com.juphoon.cloud.JCCall.STATE_CANCEL = 5
static

未接通挂断

◆ STATE_CANCELED

final int com.juphoon.cloud.JCCall.STATE_CANCELED = 6
static

未接通被挂断

◆ STATE_MISSED

final int com.juphoon.cloud.JCCall.STATE_MISSED = 7
static

未接

◆ STATE_ERROR

final int com.juphoon.cloud.JCCall.STATE_ERROR = 8
static

异常

◆ NET_STATUS_NA

final int com.juphoon.cloud.JCCall.NET_STATUS_NA = -100
static

未知状态

◆ NET_STATUS_DISCONNECTED

final int com.juphoon.cloud.JCCall.NET_STATUS_DISCONNECTED = -3
static

无网络

◆ NET_STATUS_VERY_BAD

final int com.juphoon.cloud.JCCall.NET_STATUS_VERY_BAD = -2
static

很差

◆ NET_STATUS_BAD

final int com.juphoon.cloud.JCCall.NET_STATUS_BAD = -1
static

◆ NET_STATUS_NORMAL

final int com.juphoon.cloud.JCCall.NET_STATUS_NORMAL = 0
static

一般

◆ NET_STATUS_GOOD

final int com.juphoon.cloud.JCCall.NET_STATUS_GOOD = 1
static

◆ NET_STATUS_VERY_GOOD

final int com.juphoon.cloud.JCCall.NET_STATUS_VERY_GOOD = 2
static

很好

◆ DTMF_0

final int com.juphoon.cloud.JCCall.DTMF_0 = MtcCallConstants.EN_MTC_CALL_DTMF_0
static

DTMF 0

◆ DTMF_1

final int com.juphoon.cloud.JCCall.DTMF_1 = MtcCallConstants.EN_MTC_CALL_DTMF_1
static

DTMF 1

◆ DTMF_2

final int com.juphoon.cloud.JCCall.DTMF_2 = MtcCallConstants.EN_MTC_CALL_DTMF_2
static

DTMF 2

◆ DTMF_3

final int com.juphoon.cloud.JCCall.DTMF_3 = MtcCallConstants.EN_MTC_CALL_DTMF_3
static

DTMF 3

◆ DTMF_4

final int com.juphoon.cloud.JCCall.DTMF_4 = MtcCallConstants.EN_MTC_CALL_DTMF_4
static

DTMF 4

◆ DTMF_5

final int com.juphoon.cloud.JCCall.DTMF_5 = MtcCallConstants.EN_MTC_CALL_DTMF_5
static

DTMF 5

◆ DTMF_6

final int com.juphoon.cloud.JCCall.DTMF_6 = MtcCallConstants.EN_MTC_CALL_DTMF_6
static

DTMF 6

◆ DTMF_7

final int com.juphoon.cloud.JCCall.DTMF_7 = MtcCallConstants.EN_MTC_CALL_DTMF_7
static

DTMF 7

◆ DTMF_8

final int com.juphoon.cloud.JCCall.DTMF_8 = MtcCallConstants.EN_MTC_CALL_DTMF_8
static

DTMF 8

◆ DTMF_9

final int com.juphoon.cloud.JCCall.DTMF_9 = MtcCallConstants.EN_MTC_CALL_DTMF_9
static

DTMF 9

◆ DTMF_STAR

final int com.juphoon.cloud.JCCall.DTMF_STAR = MtcCallConstants.EN_MTC_CALL_DTMF_STAR
static

DTMF *

◆ DTMF_POUND

final int com.juphoon.cloud.JCCall.DTMF_POUND = MtcCallConstants.EN_MTC_CALL_DTMF_POUND
static

DTMF #

◆ DTMF_A

final int com.juphoon.cloud.JCCall.DTMF_A = MtcCallConstants.EN_MTC_CALL_DTMF_A
static

DTMF A

◆ DTMF_B

final int com.juphoon.cloud.JCCall.DTMF_B = MtcCallConstants.EN_MTC_CALL_DTMF_B
static

DTMF B

◆ DTMF_C

final int com.juphoon.cloud.JCCall.DTMF_C = MtcCallConstants.EN_MTC_CALL_DTMF_C
static

DTMF C

◆ DTMF_D

final int com.juphoon.cloud.JCCall.DTMF_D = MtcCallConstants.EN_MTC_CALL_DTMF_D
static

DTMF D

◆ maxCallNum

int com.juphoon.cloud.JCCall.maxCallNum = 1

最大通话数,默认值为1

注解
当通话数到达最大通话数后,调用 call 接口呼出会失败,收到来电会自动拒绝

◆ termWhenNetDisconnected

boolean com.juphoon.cloud.JCCall.termWhenNetDisconnected = false

当音频接收网络状态为无网络时是否挂断,默认为不挂断

也就是 getAudioNetReceiveStatus 状态为 NET_STATUS_DISCONNECTED 时是否挂断

  • true: 挂断
  • false: 不挂断

该类的文档由以下文件生成:
  • cloud/src/main/call/com/juphoon/cloud/JCCall.java