类 | |
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 | muteSpeaker (JCCallItem item, bool mute) |
bool | muteMicrophone (JCCallItem item, bool mute) |
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< JCCallItem > | callItems [get] |
int | maxCallNum [get, set] |
bool | termWhenNetDisconnected [get, set] |
详细描述
一对一通话类
该类的所有实例方法在调用时需保证用户的登录状态为已登录
成员函数说明
◆ answer()
bool JCSDK.JCCall.JCCall.answer | ( | JCCallItem | item, |
bool | video | ||
) |
接听
调用接口成功会收到 onCallItemUpdate 通知
另外还有两种情况也会收到 onCallItemUpdate 通知:1、若收到的是视频呼叫,而本端选择了音频接听 2、若此路通话不是活跃的,会将此路通话设为活跃通话。
调用接口失败会收到 onCallItemRemove 通知
- 参数
-
item JCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象 video 针对视频呼入可以选择以视频接听还是音频接听 - true: 视频接听
- false: 音频接听
- 返回
- 是否正常调用
- true:正常执行调用流程
- false:调用失败
◆ audioRecord()
bool JCSDK.JCCall.JCCall.audioRecord | ( | JCCallItem | item, |
bool | enable, | ||
string | filePath | ||
) |
开启/关闭通话录音
调用成功会收到 onCallItemUpdate 通知
开启通话录音,需要保证没有在录音也没有在录制视频
关闭通话录音,需要保证当前通话正在录音
- 参数
-
item JCCallItem 对象,不能为空,并且 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: 音频呼叫
callParam CallParam 通话参数对象,此参数可为空。详细定义见: CallParam
- 返回
- 是否正常调用
- true:正常执行调用流程
- false:调用失败
◆ create()
|
static |
创建 JCCall 对象
JCCall 的所有接口函数,如无特殊说明,都建议在主线程调用
- 注解
- 参数
-
client JCClient 对象 mediaDevice JCMediaDevice 对象,通过 create 方法创建 callback JCCallCallback 对象,用于回调相关通知
- 返回
- JCCall 对象
- 异常
-
client、mediaDevice、callback 任意一个参数传空就会创建失败
◆ destroy()
|
static |
◆ enableUploadVideoStream()
bool JCSDK.JCCall.JCCall.enableUploadVideoStream | ( | JCCallItem | item | ) |
开启/关闭视频流发送
调用成功会收到 onCallItemUpdate 通知
通过 JCCallItem 对象的 uploadVideoStreamSelf 状态来决定开启还是关闭视频流的发送
- 若 uploadVideoStreamSelf 为 true,即已在上传视频流: 关闭视频流发送
- 若 uploadVideoStreamSelf 为 false,即未上传视频流: 开启视频流发送
- 注解
- 用于视频通话中
- 参数
-
item JCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象
- 返回
- 是否正常调用
- true:正常执行调用流程
- false:调用失败
◆ getActiveCallItem()
JCCallItem JCSDK.JCCall.JCCall.getActiveCallItem | ( | ) |
获得当前活跃的通话
当上层收到 onCallItemAdd 回调后,调用此方法可以获取到当前活跃的通话对象,可以使用该对象进行接听、渲染视频画面等操作。
若上层在收到 onCallItemAdd 回调前调用了此方法,将会返回 nil。
- 返回
- JCCallItem 对象:当前活跃的通话对象
- null:当前没有活跃的通话
◆ getStatistics()
string JCSDK.JCCall.JCCall.getStatistics | ( | ) |
获得当前通话统计信息
统计信息以Json字符串形式返回,其中包含 "Audio"、"Video"、"Mtp" 三个键值
- 返回
- 当前通话统计信息
◆ hold()
bool JCSDK.JCCall.JCCall.hold | ( | JCCallItem | item | ) |
开启/取消呼叫保持
调用成功会收到 onCallItemUpdate 通知
开启呼叫保持后,通话将被挂起,通过 hold 来决定开启/取消呼叫保持
- 注解
- 只针对音频,如果是视频通话则要上层处理视频逻辑
- 参数
-
item JCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象,此对象的通话状态必须为通话中
- 返回
- 是否正常调用
- true:正常执行调用流程
- false:调用失败
◆ mute()
bool JCSDK.JCCall.JCCall.mute | ( | JCCallItem | item | ) |
开启/取消音频输入静音
- 弃用:
- 从 v2.7.1 废弃。Juphoon 不建议你使用。如果你想开启/取消音频输入静音,请改用 muteMicrophone 方法
调用成功会收到 onCallItemUpdate 通知
开启后对端听不到本端的声音,通过 mute 来决定开启/取消静音
- 参数
-
item JCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象,此对象的通话状态必须为通话中
- 返回
- 是否正常调用
- true:正常执行调用流程
- false:调用失败
◆ muteMicrophone()
bool JCSDK.JCCall.JCCall.muteMicrophone | ( | JCCallItem | item, |
bool | mute | ||
) |
开启/取消音频输入静音
调用成功会收到 onCallItemUpdate 通知
开启后本端听不到对端的声音
- microphoneMute 为 true,即静音状态时: 取消静音
- microphoneMute 为 false,即不是静音状态时: 开启静音
- 参数
-
item JCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象,此对象的通话状态必须为通话中 mute 是否静音
- 返回
- 是否正常调用
- true:正常执行调用流程
- false:调用失败
◆ muteSpeaker()
bool JCSDK.JCCall.JCCall.muteSpeaker | ( | JCCallItem | item, |
bool | mute | ||
) |
开启/取消音频输出静音
调用成功会收到 onCallItemUpdate 通知
开启后本端听不到对端的声音
- speakerMute 为 true,即静音状态时: 取消静音
- speakerMute 为 false,即不是静音状态时: 开启静音
- 参数
-
item JCCallItem 对象,不能为空,并且 callItems 通话列表中要包含此对象,此对象的通话状态必须为通话中 mute 是否静音
- 返回
- 是否正常调用
- true:正常执行调用流程
- false:调用失败
◆ sendDtmf()
bool JCSDK.JCCall.JCCall.sendDtmf | ( | JCCallItem | item, |
DtmfValue | value | ||
) |
◆ 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 通知
- 参数
-
item JCCallItem 对象,不能为空,并且 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、若是关闭本端视频,要保证正在录制本端视频
- 参数
-
item JCCallItem 对象,不能为空,并且 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
|
get |
获得通话对象列表
当 maxCallNum > 1 时,callItems 通话对象列表中可能存在多个音频通话
◆ maxCallNum
|
getset |
最大通话数,默认值为1
- 注解
- 当通话数到达最大通话数后,调用 call 接口呼出会失败,收到来电会自动拒绝
◆ mediaConfig
|
getset |
当前的媒体配置参数
- 注解
- 该属性在调用 call 方法之前设置才生效
JCCallMediaConfig 对象建议通过 generateByMode 方法创建
◆ termWhenNetDisconnected
|
getset |
当音频接收网络状态为无网络时是否挂断,默认为 false
即 audioNetReceiveStatus 状态为 JCCallNetWorkDisconnected 时是否挂断
- true: 挂断
- false: 不挂断
该类的文档由以下文件生成:
- JCSDK/JCSDK/JCCall/JCCall.cs