public class RongCallClient
extends java.lang.Object
| 构造器和说明 |
|---|
RongCallClient(Context context,
IHandler stub) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
acceptCall(java.lang.String callId)
接听通话
|
void |
acceptCall(java.lang.String callId,
int cameraId,
boolean mirror,
StartCameraCallback callback)
以打开指定摄像头方式接听通话
|
void |
addParticipants(java.lang.String callId,
java.util.ArrayList<java.lang.String> userIds,
java.util.ArrayList<java.lang.String> observerUserIds)
邀请用户加入当前通话(仅限讨论组和群组)
|
void |
changeCallMediaType(RongCallCommon.CallMediaType mediaType)
切换 audio,video 通话
|
RongCallSession |
getCallSession()
获取当前通话实体,通话实体中维护着当前通话的所有信息。
|
static RongCallClient |
getInstance() |
void |
hangUpCall()
挂断通话
|
void |
hangUpCall(java.lang.String callId)
挂断通话
|
boolean |
isLocalAudioEnabled()
本地音频是否开启
|
boolean |
isLocalVideoEnabled()
本地视频是否开启
|
boolean |
isSpeakerphoneEnabled()
扬声器是否开启
|
boolean |
isVoIPEnabled(Context context)
检查音视频引擎是否可用
|
void |
onPermissionDenied()
android 6.0以上的版本适用。
|
void |
onPermissionGranted()
android 6.0以上的版本适用。
|
void |
publishCustomVideoStream(java.lang.String tag,
publishCallBack callBack)
发布自定义音视频流 ,该方法必须在通话过程中设置有效,如:
IRongCallListener.onCallConnected(RongCallSession, SurfaceView)回调中 |
void |
publishMediaResource(RongCallCommon.CallMediaType callMediaType)
观察者发布资源
|
void |
reCreateVideoViews()
恢复视频的视图
|
void |
registerAudioFrameListener(IAudioFrameListener listener)
已过时。
|
void |
registerAudioFrameListener(ILocalAudioPCMBufferListener listener)
注册监听,用于处理视频通话中的音频数据。
|
void |
registerVideoFrameListener(IVideoFrameListener listener)
注册监听,用于处理视频通话中的视频数据。
|
void |
setAudioSource(int audioSource)
已过时。
|
static void |
setCallSignalSender(IRongCallSignalSender signalSender) |
void |
setCameraOrientation(int cameraDisplayOrientation,
int frameOrientation)
已过时。
|
void |
setCaptureType(boolean isTexture)
已过时。
|
void |
setEnableLocalAudio(boolean enabled)
设置是否打开本地音频
|
void |
setEnableLocalVideo(boolean enabled)
设置是否打开本地摄像头
|
void |
setEnablePrintLog(boolean enable)
设置是否打印日志开关
日志文件保留在/sdcard/Android/data/package name/cache/ronglog/rcvoip.log
|
void |
setEnableSpeakerphone(boolean enabled)
设置是否打开免提
在
之后调用有效 |
static void |
setEngineServerInfo(java.lang.String cmpUrl,
java.lang.String snifferUrl)
设置音视频引擎服务器地址信息,请在 Application onCreate 方法中 SDK 初始化前调用。
|
void |
setMediaCodecConfig(boolean highProfile,
boolean hwEecode,
boolean hwDecode)
已过时。
|
static void |
setMissedCallListener(RongCallMissedListener listener) |
static void |
setReceivedCallListener(IRongReceivedCallListener listener)
设置通话来电监听
|
void |
setRTCConfig(RongRTCConfig.Builder builder)
|
void |
setVideoBitRate(int minRate,
int maxRate)
已过时。
|
void |
setVideoProfile(RongCallCommon.CallVideoProfile profile)
已过时。
|
void |
setVideoProfile(RongCallCommon.CallVideoProfile profile,
int minRate,
int maxRate)
已过时。
|
void |
setVoIPCallListener(IRongCallListener callListener)
设置通话状态回调
|
void |
startAudioRecording(java.lang.String filePath)
开启录音,SDK支持在通话中进行录音,录音文件的格式为wav。
|
java.lang.String |
startCall(Conversation.ConversationType conversationType,
java.lang.String targetId,
java.util.List<java.lang.String> userIds,
java.util.List<java.lang.String> observerUserIds,
RongCallCommon.CallMediaType mediaType,
java.lang.String extra)
发起音视频听话
切换摄像头请调用
switchCamera() |
java.lang.String |
startCall(int cameraId,
boolean mirror,
Conversation.ConversationType conversationType,
java.lang.String targetId,
java.util.List<java.lang.String> userIds,
java.util.List<java.lang.String> observerUserIds,
RongCallCommon.CallMediaType mediaType,
java.lang.String extra,
StartCameraCallback callback)
以打开指定摄像头方式发起音视频听话
切换摄像头请调用
switchCamera(int, boolean, CameraSwitchCallBack) |
void |
startCapture()
仅仅操作本地摄像头,不通知对端
|
void |
stopAudioRecording()
关闭录音,在结束音视频通话时候调用 onCallDisconnected。
|
void |
switchCamera()
前后摄像头切换
适用于通过SDK打开默认摄像头的场景 该接口配合 startCall(Conversation.ConversationType, String, List, List, RongCallCommon.CallMediaType, String)使用 |
void |
switchCamera(int cameraId,
boolean mirror,
CameraSwitchCallBack callBack)
|
void |
unInit()
隐藏方法,当 ipc 进程崩溃时,需要注销该实例并释放内存
|
void |
unpublishCustomVideoStream(RongRTCAVOutputStream outputStream,
RongRTCResultUICallBack callBack)
取消发布自定义音视频流
|
void |
unregisterAduioFrameObserver()
已过时。
|
void |
unregisterVideoFrameObserver()
解除注册 处理视频通话中视频数据的 监听
|
public static RongCallClient getInstance()
public void unInit()
public static void setReceivedCallListener(IRongReceivedCallListener listener)
listener - 来电监听public static void setCallSignalSender(IRongCallSignalSender signalSender)
public void setVoIPCallListener(IRongCallListener callListener)
callListener - 通话状态监听public static void setMissedCallListener(RongCallMissedListener listener)
public static void setEngineServerInfo(java.lang.String cmpUrl,
java.lang.String snifferUrl)
IllegalArgumentException 异常。cmpUrl - cmp 地址snifferUrl - sniffer 地址public java.lang.String startCall(Conversation.ConversationType conversationType,
java.lang.String targetId,
java.util.List<java.lang.String> userIds,
java.util.List<java.lang.String> observerUserIds,
RongCallCommon.CallMediaType mediaType,
java.lang.String extra)
switchCamera()conversationType - 会话类型, 如果实现的是不基于群组的voip,那此参数必须传 Conversation.ConversationType#NONE targetId - 目标会话id, 如果实现的是不基于群组的voip,那此参数无意义,传nulluserIds - 邀请参与通话的用户ID列表,不能为空,必须包含 observerUserIds 中除发起者ID的所有用户ID;observerUserIds - 观察者列表,无观察者可传 null;mediaType - 发起的通话媒体类型 仅音频通话 ,音视频通话 extra - 附加信息public java.lang.String startCall(int cameraId,
boolean mirror,
Conversation.ConversationType conversationType,
java.lang.String targetId,
java.util.List<java.lang.String> userIds,
java.util.List<java.lang.String> observerUserIds,
RongCallCommon.CallMediaType mediaType,
java.lang.String extra,
StartCameraCallback callback)
switchCamera(int, boolean, CameraSwitchCallBack)cameraId - 指定打开的摄像头idmirror - 是否镜像视频流IRongCallListener.onRemoteUserJoined(String, RongCallCommon.CallMediaType, int, SurfaceView)回调中添加如下设置:
public void onRemoteUserJoined(String userId, RongCallCommon.CallMediaType mediaType, int userType, SurfaceView remoteVideo) {
if (null != remoteVideo) {
((RongRTCVideoView) remoteVideo).setMirror( boolean);//观看对方视频流是否镜像处理
}
}
conversationType - 会话类型, 如果实现的是不基于群组的voip,那此参数必须传 Conversation.ConversationType#NONE targetId - 目标会话id, 如果实现的是不基于群组的voip,那此参数无意义,传nulluserIds - 邀请参与通话的用户ID列表,不能为空,必须包含 observerUserIds 中除发起者ID的所有用户ID;observerUserIds - 观察者列表,无观察者可传 null,mediaType - 发起的通话媒体类型 仅音频通话 ,音视频通话 extra - 附加信息callback - public void acceptCall(java.lang.String callId)
callId - 呼叫id,可以从来电监听的RongCallSession.getCallId()中获取public void acceptCall(java.lang.String callId,
int cameraId,
boolean mirror,
StartCameraCallback callback)
callId - 呼叫id,可以从来电监听的RongCallSession.getCallId()中获取cameraId - mirror - 是否镜像视频流IRongCallListener.onRemoteUserJoined(String, RongCallCommon.CallMediaType, int, SurfaceView)回调中添加如下设置:
public void onRemoteUserJoined(String userId, RongCallCommon.CallMediaType mediaType, int userType, SurfaceView remoteVideo) {
if (null != remoteVideo) {
((RongRTCVideoView) remoteVideo).setMirror( boolean);//观看对方视频流是否镜像处理
}
}
callback - public void hangUpCall(java.lang.String callId)
callId - 呼叫id,可以从来电监听的RongCallSession.getCallId()中获取public void hangUpCall()
public RongCallSession getCallSession()
public void addParticipants(java.lang.String callId,
java.util.ArrayList<java.lang.String> userIds,
java.util.ArrayList<java.lang.String> observerUserIds)
callId - 通话iduserIds - 邀请的用户id列表,请一定包含 邀请的观察者列表 中的人员;observerUserIds - 邀请的观察者列表,没有观察者可以传 nullpublic void changeCallMediaType(RongCallCommon.CallMediaType mediaType)
mediaType - 要切换的媒体类型:audio、videopublic void switchCamera()
startCall(Conversation.ConversationType, String, List, List, RongCallCommon.CallMediaType, String)使用public void switchCamera(int cameraId,
boolean mirror,
CameraSwitchCallBack callBack)
startCall(int, boolean, Conversation.ConversationType, String, List, List, RongCallCommon.CallMediaType, String, StartCameraCallback)使用cameraId - mirror - 是否镜像视频流IRongCallListener.onRemoteUserJoined(String, RongCallCommon.CallMediaType, int, SurfaceView)回调中添加如下设置:
public void onRemoteUserJoined(String userId, RongCallCommon.CallMediaType mediaType, int userType, SurfaceView remoteVideo) {
if (null != remoteVideo) {
((RongRTCVideoView) remoteVideo).setMirror( boolean);//观看对方视频流是否镜像处理
}
}
callBack - public void setEnableLocalVideo(boolean enabled)
enabled - true:打开摄像头 false:关闭摄像头。public void setEnableLocalAudio(boolean enabled)
enabled - true:打开本地音频 false:关闭本地音频public void setEnableSpeakerphone(boolean enabled)
之后调用有效enabled - true:打开免提 false:关闭免提public void onPermissionGranted()
IRongReceivedCallListener.onCheckPermission(RongCallSession)通知用户授权。
用户授权通过之后回调此接口通知CallLib用户授权成功。
audio call需要获取Manifest.permission.RECORD_AUDIO权限;
video call需要获取Manifest.permission.RECORD_AUDIO和Manifest.permission.CAMERA两项权限。public void onPermissionDenied()
IRongReceivedCallListener.onCheckPermission(RongCallSession)通知用户授权。
用户拒绝授权之后回调此接口通知CallLib。
audio call需要获取Manifest.permission.RECORD_AUDIO权限;
video call需要获取Manifest.permission.RECORD_AUDIO和Manifest.permission.CAMERA两项权限。public void registerVideoFrameListener(IVideoFrameListener listener)
listener - 视频数据监听public void registerAudioFrameListener(ILocalAudioPCMBufferListener listener)
listener - 音频数据监听public void unregisterVideoFrameObserver()
@Deprecated public void registerAudioFrameListener(IAudioFrameListener listener)
listener - 音频数据监听@Deprecated public void unregisterAduioFrameObserver()
@Deprecated public void setVideoProfile(RongCallCommon.CallVideoProfile profile)
profile - see RongCallCommon.CallVideoProfile
推荐使用:RongRTCConfig.Builder configBuilder = new RongRTCConfig.Builder(); configBuilder.setVideoProfile(RongRTCConfig.RongRTCVideoProfile.RONGRTC_VIDEO_PROFILE_480P_15f_1); RongCallClient.getInstance().setRTCConfig(configBuilder);
@Deprecated public void setVideoProfile(RongCallCommon.CallVideoProfile profile, int minRate, int maxRate)
profile - see RongCallCommon.CallVideoProfileminRate - 最小码率 默认分辨率 480x640下最小码率为:350maxRate - 最大码率 默认分辨率 480x640下最小码率为:1000
推荐使用:RongRTCConfig.Builder configBuilder = new RongRTCConfig.Builder(); configBuilder.setVideoProfile(RongRTCConfig.RongRTCVideoProfile.RONGRTC_VIDEO_PROFILE_480P_15f_1); configBuilder.setMaxRate(1000); configBuilder.setMinRate(350); configBuilder.setVideoFPS(15); RongCallClient.getInstance().setRTCConfig(configBuilder);
@Deprecated
public void setVideoBitRate(int minRate,
int maxRate)
setVideoProfile(RongCallCommon.CallVideoProfile, int, int)minRate - maxRate - RongRTCConfig.Builder configBuilder = new RongRTCConfig.Builder(); configBuilder.setMaxRate(1000); configBuilder.setMinRate(350); RongCallClient.getInstance().setRTCConfig(configBuilder);
public void setEnablePrintLog(boolean enable)
enable - true 打开,false 关闭public void reCreateVideoViews()
public boolean isVoIPEnabled(Context context)
context - public void startAudioRecording(java.lang.String filePath)
IRongCallListener.onCallConnected(io.rong.calllib.RongCallSession, SurfaceView)filePath - 录音文件的完整路径(如:/storage/emulated/0/RongCloud/rong.wav,需要保证存放录音文件的目录在录音开始之前就已经创建完毕)。该录音文件为UTF-8编码public void stopAudioRecording()
@Deprecated
public void setMediaCodecConfig(boolean highProfile,
boolean hwEecode,
boolean hwDecode)
highProfile - mediaCodec编码等级
ture:MediaCodec hight profile (默认) 压缩比 比baseLine高,但兼容性比baseLine差;
false:baseLine profilehwEecode - 是否使用硬编码,默认是hwDecode - 是否使用硬解码,默认是
请使用如下设置:
RongRTCConfig.Builder configBuilder = new RongRTCConfig.Builder();
configBuilder.enableHardWareEncode(true);
configBuilder.enableHardWareDecode(true);
configBuilder.enableHardWareEncodeHighProfile(true);
RongCallClient.getInstance().setRTCConfig(configBuilder);
@Deprecated public void setCaptureType(boolean isTexture)
io.rong.rongcall.CallVideoFrame中视频数据体现在CallVideoFrame#getOesTextureId(),而CallVideoFrame#getData()byte数据为空;
false:yuv方式采集,该采集模式下回调方法返回对象io.rong.rongcall.CallVideoFrame中视频数据体现在CallVideoFrame#getData(),而CallVideoFrame#getOesTextureId()oesTextureId为0;
请使用 setRTCConfig(RongRTCConfig.Builder)
RongRTCConfig.Builder configBuilder = new RongRTCConfig.Builder();
configBuilder.enableVideoTexture(true);
RongCallClient.getInstance().setRTCConfig(configBuilder);
public void publishMediaResource(RongCallCommon.CallMediaType callMediaType)
callMediaType - 需要发布的资源类型,callMediaType==RongCallCommon.CallMediaType.Video时,发布音频+视频;public boolean isLocalAudioEnabled()
public boolean isSpeakerphoneEnabled()
public boolean isLocalVideoEnabled()
public void startCapture()
@Deprecated public void setAudioSource(int audioSource)
MediaRecorder.AudioSource 中的值,默认为MediaRecorder.AudioSource.VOICE_COMMUNICATIONaudioSource -
RongRTCConfig.Builder configBuilder = new RongRTCConfig.Builder();
configBuilder.setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION);
RongCallClient.getInstance().setRTCConfig(configBuilder);
public void publishCustomVideoStream(java.lang.String tag,
publishCallBack callBack)
IRongCallListener.onCallConnected(RongCallSession, SurfaceView)回调中 tag - 自定义视频流唯一标示,不允许带下划线;callBack - publishCallBack#onSuccess(RongRTCAVOutputStream, SurfaceView) RongRTCAVOutputStream:自定义视频流对象,通过调用该对象RongRTCAVOutputStream#writeByteBuffer(byte[], int, int, int) 或RongRTCAVOutputStream#writeTextureFrame(int, int, int, float[], int, long)方法发送yuv数据或texture数据
//发送YUV数据,当前仅支持NV21格式。
data NV21格式的视频数据
width 视频的实际宽度
height 视频的实际高度
rotation 旋转角度。一般为90°或270°,取决于设备。
RongRTCAVOutputStream#writeByteBuffer(byte[] data, int width, int height, int rotation)
//发送texture数据,android.opengl.GLES11Ext#GL_TEXTURE_EXTERNAL_OES类型
width 视频的实际宽度
height 视频的实际高度
oesTextureId 纹理id android.opengl.GLES11Ext#GL_TEXTURE_EXTERNAL_OES类型
transformMatrix 矩阵
rotation 旋转角度
timestamp 当前时间戳:surfaceTexture.getTimestamp()
RongRTCAVOutputStream#writeTextureFrame(int width, int height, int oesTextureId, float[] transformMatrix, int rotation, long timestamp)
public void unpublishCustomVideoStream(RongRTCAVOutputStream outputStream,
RongRTCResultUICallBack callBack)
outputStream - 已发布的音视频流对象callBack - @Deprecated
public void setCameraOrientation(int cameraDisplayOrientation,
int frameOrientation)
cameraDisplayOrientation - 默认:0frameOrientation - 编码使用到的角度,默认:-1,设置为-1时将跟随系统角度
RongRTCConfig.Builder configBuilder = new RongRTCConfig.Builder();
configBuilder.setFrameOrientation(-1);
configBuilder.setCameraDisplayOrientation(0);
RongCallClient.getInstance().setRTCConfig(configBuilder);
public void setRTCConfig(RongRTCConfig.Builder builder)
startCall(Conversation.ConversationType, java.lang.String, java.util.List<java.lang.String>, java.util.List<java.lang.String>, io.rong.calllib.RongCallCommon.CallMediaType, java.lang.String) 和 acceptCall(String)之前调用 builder - Copyright © 2020 RongCloud. All Rights Reserved.