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