通过阅读本文,您可以了解语音聊天室Android端的集成操作。
环境要求
Android端具体环境要求,更多信息,请参见使用限制。
前提条件
- 服务端已集成并开启。具体操作,请参见服务端集成。
- 环境中已安装Android Studio 3.0或以上版本。更多信息,请参见Android Studio。
操作步骤
Demo目录结构说明
项目结构如下所示:
文件名 | 说明 |
---|---|
RTCAudioLiveRoom | 语音聊天室功能实现库。更多信息,请参见RTCAudioLiveRoom组件库目录说明。 |
RTCSolutionCommon | 公共组建库。 |
RTCViewCommon | 公共UI库。 |
app | 程序入口。 |
thirdparty-lib | 第三方库的引用。 |
RTCAudioLiveRoom组件库目录说明,如下所示:
文件名 | 说明 |
---|---|
adapter | 列表控件adapter。 |
bean | 实体类。 |
constant | 常量数据管理类,在此配置服务端请求域名和分享链接的域名。 |
api | 网络请求。 |
rtc | RTC。 |
ui | 互动界面和登录界面。 |
util | 工具类。 |
view | 自定义view。 |
API说明
API | 描述 |
---|---|
sharedInstance | 获取单例对象。 |
destorySharedInstance | 毁单例对象。 |
login | 加入房间。 |
logout | 退出房间。 |
setAudioEffectVolume | 设置音效音量。 |
setAudioAccompanyVolume | 设置伴奏音量。 |
enterSeat | 上麦。 |
leavelSeat | 下麦。 |
setRTCAudioLiveRoomDelegate | 设置监听回调。 |
muteLocalMic | 设置是否静音。 |
muteRomteAudioPlaying | 设置是否本地静音。 |
enableEarBack | 是否开启耳返。 |
startAudioAccompany | 播放伴奏。 |
stopAudioAccompany | 停止伴奏。 |
playAudioEffect | 播放音效。 |
stopAudioEffect | 停止音效。 |
setAudioEffectReverbMode | 设置音效场景(混音模式)。 |
setAudioEffectVoiceChangerMode | 设置变声音效模式。 |
API | 描述 |
---|---|
onEnterSeat | 用户上麦通知。 |
onLeaveSeat | 用户下麦通知。 |
onOccurError | 错误信息通知。 |
onUpdateRoleNotify | 切换用户角色回调。 |
onPublishChangedNotify | 推流回调。 |
onJoinChannelResult | 加入频道结果回调。 |
onLeaveChannelResult | 离开频道结果回调。 |
onSeatVolumeChanged | 音量大小提示。 |
onAudioPlayingStateChanged | 伴奏播放回调。 |
onUserAudioMuted | 用户muteAudio通知回调。 |
onRoomDestroy | 房间被销毁回调。 |
onNetworkQualityChanged | 网络状态回调。 |
功能实现接口
- sharedInstance:获取单例对象。
获取BaseRTCAudioLiveRoom的实例对象,初始化RTC SDK。
/** * 获取单例 */ public static BaseRTCAudioLiveRoom sharedInstance() { return RTCAudioLiveRoomImpl.sharedInstance(); }
- destorySharedInstance:毁单例对象。
销毁BaseRTCAudioLiveRoom的实例对象,销毁后需要再调用sharedInstance接口再次初始化实例。
/** * 销毁实例 */ public abstract void destorySharedInstance();
- login:加入房间。
根据选中的角色类型、房间号、用户名加入RTC频道。
/** * 加入房间 * * @param role 角色类型 * @param channelId 房间号 * @param userName 用户名 */ public abstract void login(String channelId, String userName, AliRtcEngine.AliRTCSDK_Client_Role role);
- logout:退出房间。
退出RTC频道。
/** * 退出房间 */ public abstract void logout();
- 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();
- setRTCAudioLiveRoomDelegate:设置监听回调。
/** * 设置监听 * * @param audioLiveRoomDelegate 监听 */ public abstract void setRTCAudioLiveRoomDelegate(RTCAudioLiveRoomDelegate audioLiveRoomDelegate);
- muteLocalMic:设置是否静音。
/** * 是否开启静音模式 * * @param mute true为静音 false不静音 * @return 0表示设置成功,反之失败 */ public abstract int muteLocalMic(boolean mute);
- muteRomteAudioPlaying:设置是否本地静音。
true表示本地听不到远端的声音,false表示本地可以听到远端声音。
/** * 停止远端的所有音频流的播放。返回0为成功,其他返回错误码。 * * @param enableSpeakerPhone true为开启 false关闭 * @return 0表示设置成功,反之失败 */ public abstract int muteAllRemoteAudioPlaying(boolean enableSpeakerPhone);
- 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);
- setAudioEffectVoiceChangerMode:设置变声音效模式。
/** * 设置变声音效模式 * * @param mode 模式 * @return int 结果码 0为成功 */ public abstract int setAudioEffectVoiceChangerMode(AliRtcEngine.AliRtcAudioEffectVoiceChangerMode mode);
回调接口
- onEnterSeat:用户上麦通知。
/** * 上麦通知回调 * * @param seatInfo 麦位信息 */ void onEnterSeat(SeatInfo seatInfo);
- onLeaveSeat:用户下麦通知。
/** * 下麦通知回调 * * @param seatInfo 麦位信息 */ void onLeaveSeat(SeatInfo seatInfo);
- onOccurError:错误信息通知。
当错误码是以下几种情况时,需要销毁SDK实例:
- ErrorCodeEnum.ERR_ICE_CONNECTION_HEARTBEAT_TIMEOUT
- ErrorCodeEnum.ERR_SDK_INVALID_STATE
- ErrorCodeEnum.ERR_SESSION_REMOVED
/** * sdk报错 * @param error 错误码 */ void onOccurError(int error);
- onUpdateRoleNotify:切换用户角色回调。
/** * 角色切换成功 * * @param oldRole 旧的用户角色 * @param newRole 新的用户角色 */ void onUpdateRoleNotify(AliRtcEngine.AliRTCSDK_Client_Role oldRole, AliRtcEngine.AliRTCSDK_Client_Role newRole);
- onPublishChangedNotify:推流回调。
/** * 推流结果回调 * @param result 返回码 0表示推流成功,反之失败 * @param isPublished 是否再推流 */ void onPublishChangedNotify(int result, boolean isPublished);
- onJoinChannelResult:加入频道结果回调。
result为0表示加入房间成功,反之失败。
/** * 登录回调 * * @param result 状态码 * @param uid 自己的uid */ void onJoinChannelResult(int result, String uid);
- onLeaveChannelResult:离开频道结果回调。
/** * 退出房间回调 * @param result 退出房间回调 0表示成功反之失败 */ void onLeaveChannelResult(int result);
- onSeatVolumeChanged:音量大小提示。
当某个用户说话状态改变是才会回调(从说话到不说话,或者从不说话到说话)。
/** * 用户音量更新回调 * @param seatIndex 麦序 * @param isSpeaking 是否正在说话 */ void onSeatVolumeChanged(int seatIndex, boolean isSpeaking);
- onAudioPlayingStateChanged:伴奏播放回调。
背景音乐播放状态的回调。
/** * 播放状态更新回调 * * @param audioPlayingStatus 当前播放状态 */ void onAudioPlayingStateChanged(AliRtcEngine.AliRtcAudioPlayingStateCode audioPlayingStatus);
- onUserAudioMuted:用户muteAudio通知回调。
某个用户静音时回调该用户当前的麦序和静音状态。
/** * 用户静音回调 * * @param seatIndex 麦序 * @param mute 是否静音 */ void onSeatMutedChanged(int seatIndex, boolean mute);
- onRoomDestroy:房间被销毁回调。
/** * 房间被销毁回调 */ void onRoomDestroy();
- onNetworkQualityChanged:网络状态回调。
/** * 网络状态回调 * * @param aliRtcNetworkQuality1 下行网络质量 * @param aliRtcNetworkQuality 上行网络质量 * @param s String 用户ID */ void onNetworkQualityChanged(String s, AliRtcEngine.AliRtcNetworkQuality aliRtcNetworkQuality, AliRtcEngine.AliRtcNetworkQuality aliRtcNetworkQuality1);