class  CallParam
 
class  MediaConfig
 

Public 类型

enum  DtmfValue {
  DtmfValue.DTMF_0 = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_0, DtmfValue.DTMF_1 = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_1, DtmfValue.DTMF_2 = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_2, DtmfValue.DTMF_3 = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_3,
  DtmfValue.DTMF_4 = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_4, DtmfValue.DTMF_5 = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_5, DtmfValue.DTMF_6 = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_6, DtmfValue.DTMF_7 = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_7,
  DtmfValue.DTMF_8 = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_8, DtmfValue.DTMF_9 = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_9, DtmfValue.DTMF_STAR = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_STAR, DtmfValue.DTMF_POUND = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_POUND,
  DtmfValue.DTMF_A = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_A, DtmfValue.DTMF_B = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_B, DtmfValue.DTMF_C = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_C, DtmfValue.DTMF_D = EN_MTC_CALL_DTMF_TYPE.EN_MTC_CALL_DTMF_D
}
 

Public 成员函数

JCCallItem getActiveCallItem ()
 
bool call (string userId, bool video, CallParam callParam)
 
bool term (JCCallItem item, JCCallReason reason, string description)
 
bool answer (JCCallItem item, bool video)
 
bool mute (JCCallItem item)
 
bool hold (JCCallItem item)
 
bool audioRecord (JCCallItem item, bool enable, string filePath)
 
bool videoRecord (JCCallItem item, bool enable, bool remote, int width, int height, string filePath, bool bothAudio)
 
bool becomeActive (JCCallItem item)
 
bool enableUploadVideoStream (JCCallItem item)
 
bool sendMessage (JCCallItem item, string type, string content)
 
string getStatistics ()
 
bool sendDtmf (JCCallItem item, DtmfValue value)
 

静态 Public 成员函数

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

属性

MediaConfig mediaConfig [get, set]
 
List< JCCallItemcallItems [get]
 
int maxCallNum [get, set]
 
bool termWhenNetDisconnected [get, set]
 

详细描述

一对一通话类

该类的所有实例方法在调用时需保证用户的登录状态为已登录

成员函数说明

◆ answer()

bool JCSDK.JCCall.JCCall.answer ( JCCallItem  item,
bool  video 
)

接听

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

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

◆ audioRecord()

bool JCSDK.JCCall.JCCall.audioRecord ( JCCallItem  item,
bool  enable,
string  filePath 
)

开启/关闭通话录音

调用成功会收到 onCallItemUpdate 通知

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

参数
itemJCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
enable开启/关闭录音
  • true: 开启录音
  • false: 关闭录音
filePath录音文件的本地保存路径,由用户自行指定,需精确到文件名及格式,例如:/Documents/Juphoon/JCSample/audio.wmv。请确保目录存在且可写。
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ becomeActive()

bool JCSDK.JCCall.JCCall.becomeActive ( JCCallItem  item)

切换活跃通话

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

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

◆ call()

bool JCSDK.JCCall.JCCall.call ( string  userId,
bool  video,
CallParam  callParam 
)

发起一对一呼叫

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

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

◆ create()

static JCCall JCSDK.JCCall.JCCall.create ( JCClient.JCClient  client,
JCMediaDevice.JCMediaDevice  mediaDevice,
JCCallCallback  callback 
)
static

创建 JCCall 对象

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

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

◆ destroy()

static void JCSDK.JCCall.JCCall.destroy ( )
static

销毁 JCCall 对象

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

◆ enableUploadVideoStream()

bool JCSDK.JCCall.JCCall.enableUploadVideoStream ( JCCallItem  item)

开启/关闭视频流发送

调用成功会收到 onCallItemUpdate 通知

通过 JCCallItem 对象的 uploadVideoStreamSelf 状态来决定开启还是关闭视频流的发送

注解
用于视频通话中
参数
itemJCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ getActiveCallItem()

JCCallItem JCSDK.JCCall.JCCall.getActiveCallItem ( )

获得当前活跃的通话

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

◆ getStatistics()

string JCSDK.JCCall.JCCall.getStatistics ( )

获得当前通话统计信息

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

返回
当前通话统计信息

◆ hold()

bool JCSDK.JCCall.JCCall.hold ( JCCallItem  item)

开启/取消呼叫保持

调用成功会收到 onCallItemUpdate 通知

开启呼叫保持后,通话将被挂起,通过 hold 来决定开启/取消呼叫保持

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

◆ mute()

bool JCSDK.JCCall.JCCall.mute ( JCCallItem  item)

开启/取消静音

调用成功会收到 onCallItemUpdate 通知

开启后对端听不到本端的声音,通过 mute 来决定开启/取消静音

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

◆ sendDtmf()

bool JCSDK.JCCall.JCCall.sendDtmf ( JCCallItem  item,
DtmfValue  value 
)

发送DTMF信息

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

◆ sendMessage()

bool JCSDK.JCCall.JCCall.sendMessage ( JCCallItem  item,
string  type,
string  content 
)

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

参数
item需要发送数据的 JCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
type文本消息类型,用户可以自定义,例如text,xml等
content文本内容
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ term()

bool JCSDK.JCCall.JCCall.term ( JCCallItem  item,
JCCallReason  reason,
string  description 
)

挂断

调用接口成功会收到 onCallItemRemove 通知

参数
itemJCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
reason挂断原因
description挂断描述
返回
是否正常调用
  • true:正常执行调用流程
  • false:调用失败

◆ videoRecord()

bool JCSDK.JCCall.JCCall.videoRecord ( JCCallItem  item,
bool  enable,
bool  remote,
int  width,
int  height,
string  filePath,
bool  bothAudio 
)

开启/关闭视频通话录制

调用成功会收到 onCallItemUpdate 通知

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

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

属性说明

◆ callItems

List<JCCallItem> JCSDK.JCCall.JCCall.callItems
get

获得通话对象列表

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

◆ maxCallNum

int JCSDK.JCCall.JCCall.maxCallNum
getset

最大通话数,默认值为1

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

◆ mediaConfig

MediaConfig JCSDK.JCCall.JCCall.mediaConfig
getset

当前的媒体配置参数

注解
该属性在调用 call 方法之前设置才生效
JCCallMediaConfig 对象建议通过 generateByMode 方法创建

◆ termWhenNetDisconnected

bool JCSDK.JCCall.JCCall.termWhenNetDisconnected
getset

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

audioNetReceiveStatus 状态为 JCCallNetWorkDisconnected 时是否挂断

  • true: 挂断
  • false: 不挂断

该类的文档由以下文件生成:
  • JCSDK/JCSDK/JCCall/JCCall.cs