通过阅读本文,您可以了解Android端超级小班课的集成操作。
环境要求
Android端具体环境要求,更多信息,请参见使用限制。
前提条件
- Web端服务已集成并开启。具体操作,请参见Web集成。
- 环境中已安装Android Studio 3.0或以上版本。更多信息,请参见Android Studio。
操作步骤
Demo目录结构说明
项目结构如下所示:
文件名 | 说明 |
---|---|
RTCSuperClassRoom | 超级小班课功能实现库。更多信息,请参见RTCSuperClassRoom组件库目录说明。 |
RTCSolutionCommon | 公共组建库。 |
RTCViewCommo | 公共UI库。 |
app | 程序入口。 |
thirdparty-lib | 第三方库的引用。 |
RTCSuperClassRoom组件库目录说明,如下所示:
文件名 | 说明 |
---|---|
activity | activity类。 |
adapter | 列表控件adapter。 |
api | 网络请求。 |
bean | 实体类。 |
constant | 常量数据管理类,在此配置服务端请求域名和分享链接的域名。 |
rtc | RTC。 |
ui | 互动界面和登录界面。 |
util | 工具类。 |
view | 自定义view。 |
API说明
API | 描述 |
---|---|
sharedInstance | 获取单例对象。 |
destorySharedInstance | 毁单例对象。 |
login | 加入房间。 |
logout | 退出房间。 |
muteLocalCamera | 切换是否停止发布本地视频。 |
muteLocalMic | 切换是否停止发布本地音频。 |
switchCamera | 切换摄像头。 |
getUserInfo | 获取用户信息。 |
registerCallBack | 注册回调。 |
startPreview | 开始预览。 |
stopPreview | 停止预览。 |
startPublish | 开始推流。 |
stopPublish | 停止推流。 |
setRemoteViewConfig | 设置远端画面。 |
getRemoteUserList | 获取远端用户列表。 |
isInCall | 是否入会。 |
isPreview | 是否预览。 |
API | 描述 |
---|---|
onJoin | 用户上线通知。 |
onLeave | 用户下线通知。 |
onOccurError | SDK报错。 |
onOccurWarning | SDK警告。 |
onRoomDestroy | 房间被销毁的回调。 |
onSDKError | SDK报错,需要销毁实例。 |
onJoinChannelResult | 加入房间通知。 |
onLeaveChannelResult | 离开房间通知。 |
onNetworkQualityChanged | 网络状态回调。 |
onUserVideoMuted | 用户muteVideo通知。 |
onUserAudioMuted | 用户muteAudio通知。 |
onSubscribeResult | 订阅成功回调。 |
onUserSpeaking | 判断用户是否在说话。 |
onRemoteTraceAvaliable | 当订阅情况发生变化时回调。 |
功能实现接口
- sharedInstance:获取单例对象。
获取RTCSuperClassImpl的实例对象,初始化RTC SDK。
/** * 获取单例 */ public static BaseRTCSuperClass sharedInstance() { return RTCSuperClassImpl.sharedInstance(); }
- destorySharedInstance:毁单例对象。
销毁RTCSuperClassImpl的实例对象,销毁后需要再调用sharedInstance接口再次初始化实例。
/** * 销毁实例 */ public abstract void destorySharedInstance();
- login:加入房间。
根据输入的房间号、用户名加入RTC频道。
/** * 登录 * * @param channelId 房间号 * @param userName 昵称 */ public abstract void login(String channelId, String userName);
- logout:退出房间。
退出RTC频道。
/** * 登出 */ public abstract void logout();
- muteLocalCamera:切换是否停止发布本地视频。
/** * 切换是否停止发布本地视频 * @param channelId 频道号 * @param isMute 是否停止发布 */ public abstract void muteLocalCamera(String channelId,boolean isMute);
- muteLocalMic:切换是否停止发布本地音频。
/** * 切换是否停止发布本地音频 * @param channelId 频道号 * @param isMute 是否停止发布 */ public abstract void muteLocalMic(String channelId,boolean isMute);
- switchCamera:设置摄像头接口。
/** * 设置摄像头 */ public abstract void switchCamera();
- getUserInfo:获取用户信息。
/** * 获取用户信息 * @param channelId 频道号 * @param userId 用户id */ public abstract AliRtcRemoteUserInfo getUserInfo(String channelId, String userId);
- registerCallBack:注册回调。
/** * 注册回调 */ public abstract void registerCallBack(RTCSuperClassCallback rtcSuperClassCallback);
- startPreview:开始预览。
/** * 开始预览 * @param viewGroup 显示画面的view */ public abstract void startPreview(ViewGroup viewGroup);
- stopPreview:停止预览。
/** * 停止预览 */ public abstract void stopPreview();
- startPublish:开始推流。
/** * 开始推流 * @param channelId 频道号 */ public abstract void startPublish(String channelId);
- stopPublish:停止推流。
/** * 停止推流 * @param channelId 频道号 */ public abstract void stopPublish(String channelId);
- setRemoteViewConfig:设置远端画面。
/** * 设置远端画面 * @param channelId 频道号 * @param canvas canvas对象 * @param track track对象 */ public abstract void setRemoteViewConfig(String channelId, AliRtcEngine.AliVideoCanvas canvas, String uid, AliRtcEngine.AliRtcVideoTrack track);
- getRemoteUserList:获取远端用户列表。
/** * 获取远端用户列表 * @param channelId 频道号 */ public abstract List<RTCUserInfo> getRemoteUserList(String channelId);
- isInCall:是否入会。
/** * 是否入会 * @param channelId 频道号 */ public abstract boolean isInCall(String channelId);
- isPreview:是否预览。
/** * 是否预览 * @param channelId 频道号 */ public abstract boolean isPreview(String channelId);
回调接口
- onJoin:用户上线通知。
/** * 用户上线通知 * * @param userId 用户id */ void onJoin(String channelId,String userId);
- onLeave:用户下线。
/** * 用户下线通知 * @param channelId 频道号 * @param userId 用户id */ void onLeave(String channelId,String userId);
- onOccurError:SDK报错通知。
/** * sdk报错 * * @param channelId 频道号 */ void onOccurError(String channelId,int error);
- onOccurWarning:SDK警告。
/** * sdk警告 * * @param channelId 频道号 */ void onOccurWarning(String channelId,int error);
- onRoomDestroy:房间被销毁的回调。
/** * 房间被销毁的回调 * @param channelId 频道号 */ void onRoomDestroy(String channelId);
- onSDKError:SDK报错,需要销毁实例。
/** * sdk报错,需要销毁实例 * @param channelId 频道号 */ void onSDKError(String channelId,int error);
- onJoinChannelResult:加入房间通知。
/** * 加入房间通知 * @param channelId 频道号 * @param result 0为成功反之失败 */ void onJoinChannelResult(String channelId,int result);
- onLeaveChannelResult:离开房间通知。
/** * 离开房间通知 * @param channelId 频道号 */ void onLeaveChannelResult(String channelId,int result);
- onNetworkQualityChanged:网络状态。
/** * 网络状态回调 * * @param channelId 频道号 * @param aliRtcNetworkQuality1 下行网络质量 * @param aliRtcNetworkQuality 上行网络质量 * @param userId String 用户ID */ void onNetworkQualityChanged(String channelId,String userId, AliRtcEngine.AliRtcNetworkQuality aliRtcNetworkQuality, AliRtcEngine.AliRtcNetworkQuality aliRtcNetworkQuality1);
- onUserVideoMuted:用户muteVideo通知。
/** * 用户muteVideo通知 * @param channelId 频道号 */ void onUserVideoMuted(String channelId,String userId, boolean mute);
- onUserAudioMuted:用户muteAudio通知。
/** * 用户muteAudio通知 * @param channelId 频道号 */ void onUserAudioMuted(String channelId,String userId, boolean mute);
- onSubscribeResult:订阅成功。
/** * * 订阅成功 * @param channelId 频道号 * @param userId 用户ID * @param result 0表示订阅成功,非0表示失败 * @param videoTrack 订阅成功的视频流 * @param audioTrack 订阅成功的音频流 */ void onSubscribeResult(String channelId,String userId, int result, AliRtcEngine.AliRtcVideoTrack videoTrack, AliRtcEngine.AliRtcAudioTrack audioTrack);
- onUserSpeaking:判断用户是否在说话。
/** * * 用户是否在说话 * @param channelId 频道号 * @param userId 用户ID * @param isSpeaking 是否正在说话 */ void onUserSpeaking(String channelId,String userId, boolean isSpeaking);
- onRemoteTraceAvaliable:当订阅情况发生变化时的回调。
/** * * 当订阅情况发生变化时,返回这个消息 onSubscribeChangedNotify * @param channelId 频道号 * @param userId 用户ID * @param videoTrack 订阅成功的视频流 * @param audioTrack 订阅成功的音频流 */ void onRemoteTraceAvaliable(String channelId,String userId, AliRtcEngine.AliRtcAudioTrack audioTrack, AliRtcEngine.AliRtcVideoTrack videoTrack);