集成Android 纯音频SDK
更新时间:2025-05-15
集成SDK
环境准备
本节将介绍如何创建项目,将BRTC SDK集成进你的项目中。
Android Studio 3.2 或以上版本,Gradle 4.6或以上版本,编译环境请选择支持java8 Android KK(4.4)及以上的设备
*注:经过验证的开发环境如下:
Plain Text
1------------------------------------------------------------
2Gradle 4.6
3------------------------------------------------------------
4
5Groovy: 2.4.12
6Ant: Apache Ant(TM) version 1.9.9 compiled on February 2 2017
7JVM: 1.8.0_192 (Oracle Corporation 25.192-b12)
8OS: Mac OS X 10.13.6 x86_64
下载和安装
进入RTC文档中心,点击“下载专区>SDK&Demo下载”,选择Android 纯音频SDK,即可下载客户端SDK。下载后请校验下载的包md5值与SDK中心里记录的是否一致。
快速入门
SDK中包含Demo工程,可用于参考接入
Java
1// 初始化SDK,获取appID,token 请于官网注册(https://cloud.baidu.com/doc/RTC/s/Qjxbh7jpu)
2BaiduRtcRoom mAudioRoom = BaiduRtcRoom.initWithAppID(context, "appid", "token");
3
4// sdk 参数集合
5RtcParameterSettings cfg = RtcParameterSettings.getDefaultSettings();
6cfg.AutoPublish = true; // 登录后自动推流
7cfg.AutoSubScribe = true; // 登录自动订阅
8cfg.HasVideo = false; // 纯音频SDK 无视频
9cfg.HasData = false; // 关闭数据通道
10
11// 设置SDK 参数
12mAudioRoom.setParamSettings(cfg,
13 RtcParameterSettings.RtcParamSettingType.RTC_PARAM_SETTINGS_ALL);
14
15// 设置SDK 回调监听
16mAudioRoom.setBaiduRtcRoomDelegate(delegate);
17
18// 登录
19mAudioRoom.loginRtcRoomWithRoomName(mRoomName, java.lang.Long.parseLong(mUserId), mUserName, true);
20
21// 登录成功后会自动推流
22
23// 登出
24mAudioRoom.logoutRtcRoom();
25
26// 资源销毁
27mAudioRoom.destroy();
日志上报
UserId 推荐每个用户唯一,方便后续排查问题。
BaiduRtcRoom.setVerbose(true) 用于打开日志,建议在调试阶段打开此开关,方便调试。
setWriteLogConfig 用于打开日志写本地文件能力。
enableAutoUploadLog(true) 开启后,会自动上传日志文件到云服务器,方便排查线上问题。
问题上报
SDK 相关问题可提工单,携带 AppId、UserId、RoomName参数,和现象与问题时间点
异常处理
可参考下面实现,详细处理可参考 Demo 工程中重试逻辑实现
Java
1// 部分异常回调事件,收到需进行重连处理
2 /**
3 * 链接丢失,需进行重连处理
4 */
5 public void onConnectionLost(int code);
6
7 /**
8 * 登录失败后,需进行重连处理
9 *
10 * @param code 0 成功,其他失败, 101 timeout
11 * @param roomId 房间id
12 */
13 public void onLoginRtcRoom(int code, long roomId);
14 /*
15 * 异常事件,需进行重连处理
16 */
17 public abstract void onError(/*RtcErrorCodes*/int errorInfo);
18
19/* 重连参考代码,详细代码可参考Demo工程 */
20 // 登出
21 mAudioRoom.logoutRtcRoom();
22 // 资源销毁
23 mAudioRoom.destroy();
24 async sleep(200ms);
25 mAudioRoom = BaiduRtcRoom.initWithAppID(context, "appid", "token");
26 mAudioRoom.setParamSettings(cfg,
27 RtcParameterSettings.RtcParamSettingType.RTC_PARAM_SETTINGS_ALL);
28 mAudioRoom.setBaiduRtcRoomDelegate(delegate);
29 mAudioRoom.loginRtcRoomWithRoomName(mRoomName, java.lang.Long.parseLong(mUserId), mUserName);
混淆配置
Java
1-keep class org.webrtc.** {*;}
2-keep class com.baidu.rtc.BaiduRtcRoom {*;}
3-keep class com.baidu.rtc.BaiduRtcRoom$* {*;}
权限
Java
1<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
2<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
3<uses-permission android:name="android.permission.RECORD_AUDIO" />
4<uses-permission android:name="android.permission.INTERNET" />
5<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
6<uses-permission android:name="android.permission.BLUETOOTH" />
7<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
8<uses-permission android:name="android.permission.READ_PHONE_STATE"/>