通过阅读本文,您可以了解到Android端音视频通话的集成方法。
环境要求
Android端具体环境要求,更多信息,请参见使用限制。
前提条件
环境中已安装Android Studio 3.0或以上版本,更多信息,请参见Android Studio。
操作步骤
Demo目录结构说明
应用程序入口目录说明:
文件名 | 说明 |
---|---|
base | activity基础类。 |
bean | 实体类。 |
listener | 监听回调类。 |
login | 登录页。 |
network | 网络请求。 |
adapter | 列表控件adapter。 |
rtc | RTC。 |
util | 工具类。 |
videocall | 通话页面。 |
widget | 控件。 |
API说明
API | 描述 |
---|---|
sharedInstance | 获取RTCBeaconTowerImpl的实例对象,初始化RTC SDK。 |
destorySharedInstance | 销毁RTCBeaconTowerImpl的实例对象,销毁后需要再调用sharedInstance接口再次初始化实例。 |
joinChannel | 加入RTC频道。 |
logout | 退出RTC频道。 |
muteLocalMic | 是否停止本地音频采集。 |
muteLocalCamera | 是否停止本地视频采集。 |
switchCamera | 切换前后摄像头。 |
setLocalViewConfig | 为本地预览设置参数及绘制窗口。 |
startPreview | 开始本地预览。 |
stopPreview | 停止本地预览。 |
configRemoteCameraTrack | 设置是否拉取相机、屏幕、音频流,必须调用subscribe才能生效。 |
subscribe | 手动拉视频和音频流。 |
setRemoteViewConfig | 为远端的视频设置参数及绘制窗口。 |
setDelegate | 设置监听。 |
getUserInfo | 获取用户信息。 |
API | 描述 |
---|---|
onJoinChannelResult | 加入房间的通知。 |
onRemoteTrackAvailableNotify | 远端用户音视频流发生变化时的回调。 |
onSubscribeChangedNotify | 订阅情况发生变化时的回调。 |
onNetworkQualityChanged | 网络质量变化时的回调。 |
onRemoteUserOnLineNotify | 远端用户上线的通知。 |
onRemoteUserOffLineNotify | 远端用户下线的通知。 |
功能实现接口
- sharedInstance:获取RTCBeaconTowerImpl的实例对象,初始化RTC SDK。
/** * 获取单例 */ public static RTCBeaconTowerImpl sharedInstance() { return RTCBeaconTowerImpl.sharedInstance(); }
- destorySharedInstance:销毁RTCBeaconTowerImpl的实例对象,销毁后需要再调用sharedInstance接口再次初始化实例。
/** * 销毁实例 */ public abstract void destorySharedInstance();
- joinChannel:加入RTC频道。
/** * 加入房间 */ public abstract void joinChannel(AliRtcAuthInfo authInfo, String displayName);
- logout:退出RTC频道。
/** * 登出 */ public abstract void logout();
- muteLocalMic:是否停止本地音频采集。
/** * 停止发布音频 */ public abstract int muteLocalMic(boolean isMute);
- muteLocalCamera:是否停止本地视频采集。
/** * 停止发布视频 */ public abstract int muteLocalCamera(boolean isMute);
- switchCamera:切换前后摄像头。
/** * 切换摄像头 */ public abstract int switchCamera();
- setLocalViewConfig:为本地预览设置参数及绘制窗口。
/** * 设置本地预览渲染参数 */ public abstract void setLocalViewConfig(AliRtcEngine.AliVideoCanvas localAliVideoCanvas, AliRtcEngine.AliRtcVideoTrack aliRtcVideoTrackCamera);
- startPreview:开始本地预览。
/** * 开启预览 */ public abstract void startPreview();
- stopPreview:停止本地预览。
/** * 停止预览 */ public abstract void stopPreview();
- configRemoteCameraTrack:设置是否拉取相机、屏幕、音频流,必须调用subscribe才能生效。
/** * 设置是否订阅远端相机流。默认为订阅大流。当对流进行操作时(如手动订阅,关闭订阅),必须调用subscribe才能生效 */ public abstract void configRemoteCameraTrack(String userId, boolean master, boolean enable);
- subscribe:手动拉视频和音频流。
/** * 订阅 */ public abstract void subscribe(String userId);
- setRemoteViewConfig:为远端的视频设置参数及绘制窗口。
/** * 设置远端渲染参数 */ public abstract void setRemoteViewConfig(AliRtcEngine.AliVideoCanvas aliVideoCanvas, String uid, AliRtcEngine.AliRtcVideoTrack aliRtcVideoTrack);
- setDelegate:设置监听。
/** * 设置监听 */ public abstract void setDelegate(RTCInteractiveClassDelegate callback);
- getUserInfo:获取用户信息。
/** * 获取用户信息 */ public abstract AliRtcRemoteUserInfo getUserInfo(String s);
回调接口
- onJoinChannelResult:加入房间的通知。
/** * 加入房间通知 * @param result 0为成功,反之失败 */ void onJoinChannelResult(int result);
- onRemoteTrackAvailableNotify:远端用户音视频流发生变化时的回调。
/** * * 当订阅情况发生变化时,返回这个消息onSubscribeChangedNotify * @param userId 用户ID * @param videoTrack 订阅成功的视频流 * @param audioTrack 订阅成功的音频流 */ void onRemoteTrackAvailableNotify(String userId, AliRtcEngine.AliRtcAudioTrack audioTrack, AliRtcEngine.AliRtcVideoTrack videoTrack);
- onSubscribeChangedNotify:当订阅情况发生变化时的回调。
/** * * 订阅结果回调 * @param userId 用户ID * @param videoTrack 订阅成功的视频流 * @param audioTrack 订阅成功的音频流 */ void onSubscribeChangedNotify(String userId, AliRtcEngine.AliRtcAudioTrack audioTrack, AliRtcEngine.AliRtcVideoTrack videoTrack);
- onNetworkQualityChanged:网络质量变化时的回调。
/** * 网络状态回调 * * @param aliRtcNetworkQuality1 下行网络质量 * @param aliRtcNetworkQuality 上行网络质量 * @param s 用户ID */ void onNetworkQualityChanged(String s, AliRtcEngine.AliRtcNetworkQuality aliRtcNetworkQuality, AliRtcEngine.AliRtcNetworkQuality aliRtcNetworkQuality1);
- onRemoteUserOnLineNotify:远端用户上线的通知。
/** * 用户上线通知 * * @param userId 用户ID */ void onRemoteUserOnLineNotify(String userId);
- onRemoteUserOffLineNotify:远端用户下线的通知。
/** * 用户下线通知 * @param userId 用户ID */ void onRemoteUserOffLineNotify(String userId);