通过阅读本文,您可以了解视频互动直播Android端的集成操作。
环境要求
Android端具体环境要求,更多信息,请参见使用限制。
前提条件
- 服务端已集成并开启。具体操作,请参见服务端集成。
- 环境中已安装Android Studio 3.0或以上版本。更多信息,请参见Android Studio。
操作步骤
Demo目录结构说明
项目结构如下所示:
文件名 | 说明 |
---|---|
RTCVideoLiveRoom | 视频互动直播功能实现库。更多信息,请参见RTCVideoLiveRoom组件库目录说明。 |
RTCSolutionCommon | 公共组建库。 |
RTCViewCommon | 公共UI库。 |
app | 程序入口。 |
thirdparty-lib | 第三方库的引用。 |
RTCVideoLiveRoom组件库目录说明,如下所示:
文件名 | 说明 |
---|---|
adapter | 列表控件adapter。 |
bean | 实体类。 |
constant | 常量数据管理类,在此配置服务端请求域名和分享链接的域名。 |
api | 网络请求。 |
rtc | RTC。 |
ui | 互动界面和登录界面。 |
util | 工具类。 |
view | 自定义view。 |
API说明
API | 描述 |
---|---|
sharedInstance | 获取单例对象。 |
destorySharedInstance | 毁单例对象。 |
joinRoom | 加入直播。 |
leaveRoom | 退出直播。 |
setAudioEffectVolume | 设置音效音量。 |
setAudioAccompanyVolume | 设置伴奏音量。 |
enterSeat | 上麦。 |
leavelSeat | 下麦。 |
enableEarBack | 设置耳返。 |
startAudioAccompany | 播放伴奏。 |
stopAudioAccompany | 停止伴奏。 |
playAudioEffect | 播放音效。 |
stopAudioEffect | 停止音效。 |
setAudioEffectReverbMode | 设置音效场景(混音模式)。 |
setDelegate | 设置监听。 |
switchCamera | 翻转摄像头。 |
setBeautyEffect | 设置美颜效果。 |
getWhiteLevel | 获取美白等级。 |
getSmoothLevel | 获取磨皮等级。 |
createRoom | 创建房间。 |
destroyRoom | 销毁房间。 |
kickout | 踢人。 |
startCameraPreView | 本地预览。 |
stopCameraPreView | 停止本地预览。 |
startPlay | 播放远端画面。 |
API | 描述 |
---|---|
onEnterSeat | 用户上麦通知。 |
onLeaveSeat | 用户下麦通知。 |
onOccurError | 错误信息通知。 |
onJoinChannelResult | 加入频道结果回调。 |
onLeaveChannelResult | 离开频道结果回调。 |
onRoomDestroy | 房间被销毁的回调。 |
onAudioPlayingStateChanged | 伴奏播放回调。 |
onNetworkQualityChanged | 网络状态回调。 |
onKickedOut | 被踢出房间的回调。 |
功能实现接口
- sharedInstance:获取单例对象。
获取BaseRTCAudioLiveRoom的实例对象,初始化RTC SDK。
/** * 获取单例 */ public static BaseRTCAudioLiveRoom sharedInstance() { return RTCAudioLiveRoomImpl.sharedInstance(); }
- destorySharedInstance:毁单例对象。
销毁BaseRTCAudioLiveRoom的实例对象,销毁后需要再调用sharedInstance接口再次初始化实例。
/** * 销毁实例 */ public abstract void destorySharedInstance();
- joinRoom:加入房间。
观众端调用,通过房间号等信息获取播放链接并播放旁路流。
/** * 加入直播 * * @param channelId 房间号 * @param view 画面载体 * @param userId uid * @param userName 昵称 */ public abstract void joinRoom(String channelId, String userId, String userName, SurfaceView view);
- leaveRoom:离开房间。
观众端调用,离开房间。
/** * 退出房间 */ public abstract void leaveRoom();
- setAudioEffectVolume:设置音效音量。
同时设置播放和推流的音量。
/** * 设置音效音量 * * @param soundId 音效文件的sourceId * @param volume 音量区间0-100 * */ public abstract void setAudioEffectVolume(int soundId, int volume);
- setAudioAccompanyVolume:设置伴奏音量。
同时设置播放和推流的音量。
/** * 设置伴奏音量 * @param volume 音量区间0-100 */ public abstract void setAudioAccompanyVolume(int volume);
- enterSeat:上麦。
切换互动角色。
/** * 上麦 */ public abstract void enterSeat();
- leavelSeat:下麦。
切换观众角色。
/** * 下麦 */ public abstract void leaveSeat();
- enableEarBack:是否开启耳返。
/** * 是否耳返 * * @param enableEarBack 是否开启耳返 true为开启 false关闭 * @return 0表示设置成功,反之失败 */ public abstract int enableEarBack(boolean enableEarBack);
- startAudioAccompany:播放伴奏。
/** * 开始伴奏 * * @param fileName 伴奏文件路径,支持本地文件和网络url * @param onlyLocalPlay 是否仅本地播放,true表示仅仅本地播放,false表示本地播放且推流到远端 * @param replaceMic 是否替换mic的音频流,true表示伴奏音频流替换本地mic音频流,false表示伴奏音频流和mic音频流同时推 * @param loopCycles 循环播放次数,-1表示一直循环 */ public abstract void startAudioAccompany(String fileName, boolean onlyLocalPlay, boolean replaceMic, int loopCycles);
- stopAudioAccompany:停止伴奏。
/** * 停止伴奏 */ public abstract void stopAudioAccompany();
- playAudioEffect:播放音效。
/** * 播放音效 * * @param soundId 音效ID * @param filePath 音效文件路径,支持本地文件和网络url * @param cycles 循环播放次数。-1表示一直循环 * @param publish 是否将音效音频流推到远端 */ public abstract void playAudioEffect(int soundId, String filePath, int cycles, boolean publish);
- stopAudioEffect:停止音效。
/** * 停止音效 * * @param soundId 音效ID */ public abstract void stopAudioEffect(int soundId);
- setAudioEffectReverbMode:设置音效场景(混音模式)。
/** * 设置音效场景 * @param aliRtcAudioEffectReverbMode 音效场景枚举 */ public abstract void setAudioEffectReverbMode(AliRtcEngine.AliRtcAudioEffectReverbMode aliRtcAudioEffectReverbMode);
- setDelegate:设置监听。
/** * 设置rtc监听 * * @param audioLiveRoomDelegate 监听 */ public abstract void setDelegate(RTCVideoLiveRoomDelegate audioLiveRoomDelegate);
- switchCamera:翻转摄像头。
/** * 翻转摄像头 */ public abstract void switchCamera();
- setBeautyEffect:设置美颜效果。
/** * 设置美颜等级 */ public abstract void setBeautyEffect(float whiteLevel, float smoothLevel);
- getWhiteLevel:获取美白等级。
/** * 获取当前美白等级 */ public abstract float getWhiteLevel();
- getSmoothLevel:获取磨皮等级。
/** * 获取当前磨皮等级 */ public abstract float getSmoothLevel();
- createRoom:创建房间。
主播调用,创建RTC频道并加入。
/** * 创建房间 * @param channelId 房间号 * @param userId uid * @param userName 用户名 */ public abstract void createRoom(String channelId, String userId, String userName);
- destroyRoom:销毁房间。
主播调用,销毁RTC频道并退出。
/** * 销毁房间 */ public abstract void destroyRoom();
- kickout:踢人。
主播调用,将连麦观众都踢下线。
/** * 踢人(主播才可以踢人) */ public abstract void kickOut();
- startCameraPreView:本地预览。
/** * 预览本地摄像头画面 * @param viewGroup 播放画面的载体 */ public abstract void startCameraPreView(ViewGroup viewGroup);
- stopCameraPreView:停止本地预览。
/** * 停止预览本地摄像头画面 */ public abstract void stopCameraPreview();
- startPlay:播放远端画面。
/** * 播放远端流 * @param uid 用户id * @param viewGroup 播放画面的载体 */ public abstract void startPlay(String uid, ViewGroup viewGroup);
回调接口
- onEnterSeat:用户上麦通知。
/** * 上麦通知回调 * * @param seatInfo 麦位信息 */ void onEnterSeat(SeatInfo seatInfo);
- onLeaveSeat:用户下麦通知。
/** * 下麦通知回调 * * @param seatInfo 麦位信息 */ void onLeaveSeat(SeatInfo seatInfo);
- onOccurError:错误信息通知。
/** * sdk报错,需要销毁实例 */ void onOccurError(int error);
- onJoinChannelResult:创建房间的回调。
/** * 创建房间的回调 * @param result 0为成功反之失败 */ void onJoinChannelResult(int result);
- onLeaveChannelResult:退出房间的回调。
/** * 退出房间回调 */ void onLeaveChannelResult(int result);
- onAudioPlayingStateChanged:伴奏播放回调。
背景音乐播放状态的回调。
/** * 播放状态更新回调 * * @param audioPlayingStatus 当前播放状态 */ void onAudioPlayingStateChanged(AliRtcEngine.AliRtcAudioPlayingStateCode audioPlayingStatus);
- onRoomDestroy:房间被销毁回调。
/** * 房间被销毁回调 */ void onRoomDestroy();
- onNetworkQualityChanged:网络质量变化时回调。
/** * 网络状态回调 * * @param aliRtcNetworkQuality1 下行网络质量 * @param aliRtcNetworkQuality 上行网络质量 * @param s String 用户ID */ void onNetworkQualityChanged(String s, AliRtcEngine.AliRtcNetworkQuality aliRtcNetworkQuality, AliRtcEngine.AliRtcNetworkQuality aliRtcNetworkQuality1);
- onKickedOut:被踢出房间的回调。
/** * 被踢出房间 */ void onKickOuted();