集成并初始化 SDK
更新时间: 2024/07/16 10:59:32
本文介绍 Android 端快速集成并初始化 NERoom SDK 的操作步骤,帮助您快速集成并初始化 NERoom SDK。
开发环境要求
在开始运行工程之前,请您准备以下开发环境:
- Android SDK API 等级 21 或以上。
- Android Studio 3.0 或以上版本。
- Android 系统 5.0 或以上版本的移动设备。
前提条件
- 已 创建应用。
- 已 开通 NERoom 房间组件。
集成 SDK
-
在网易云信文档中心的 更新日志 页面,查看 NERoom SDK 最新版本的版本号。
-
在项目对应模块的 build.gradle 中加入以下行。
implementation 'com.netease.yunxin.kit.room:roomkit:x.x.x'
若需要使用音视频通话的虚拟背景功能和美颜功能,需要单独添加对应依赖。
//美颜 implementation 'com.netease.yunxin:nertc-beauty:x.x.x' implementation 'com.netease.yunxin:nertc-facedetect:x.x.x' //虚拟背景 implementation 'com.netease.yunxin:nertc-segment:x.x.x'
按照 NERoom SDK 适配的对应版本引入相关的依赖,具体适配的版本号请参考 更新日志。
例如:引入 NERoom 1.22.2,那么适配的 NERTC(音视频通话)版本为 V5.5.203-SNAPSHOT。
-
在项目对应的根目录的build.gradle 中加入以下行。
allprojects { repositories { mavenCentral() google() // 该仓库为 Maven Snapshot 仓库,按需添加 maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } } }
如果当前版本的依赖库中包含有 SNAPSHOT 版本依赖,则还需要配置添加 Maven Snapshot 仓库地址。
例如:引入 NERoom 1.22.2,其适配的 NERTC(音视频通话)版本为 V5.5.203-SNAPSHOT,所以需要添加 Maven Snapshot 仓库地址,否则会造成构建失败。
-
在
app/src/main/AndroidManifest.xml
文件中添加类似如下代码,添加相应的设备权限。java
//网络相关 <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> //防止通话过程中锁屏 <uses-permission android:name="android.permission.WAKE_LOCK"/> //视频权限 <uses-permission android:name="android.permission.CAMERA"/> //录音权限 <uses-permission android:name="android.permission.RECORD_AUDIO"/> //修改音频设置 <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> //蓝牙权限 <uses-permission android:name="android.permission.BLUETOOTH"/> //蓝牙连接权限,此权限还需在运行应用时动态申请,否则 Android 12 及以上的设备蓝牙无法正常工作 <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> //外置存储卡写入权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> //蓝牙 startBluetoothSco 会用到此权限 <uses-permission android:name="android.permission.BROADCAST_STICKY"/> //获取设备信息 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> //允许应用程序使用camera硬件资源 <uses-feature android:name="android.hardware.camera"/> //自动对焦 <uses-feature android:name="android.hardware.camera.autofocus"/> ......//APP需要的其他设备权限
您需要在代码中动态申请
android.permission.BLUETOOTH_CONNECT
权限,否则 Android 12 及以上系统版本的设备会无法使用蓝牙功能,具体信息请参见 Android 官方说明。
初始化 SDK
- 若您使用 公有云 环境,则参考以下示例代码进行初始化。
如果您的 AppKey 对应的服务区域是中国国内,初始化 NERoom SDK 的示例代码如下:
javaString appKey = "your appKey";
NERoomKitOptions options = new NERoomKitOptions(appKey);
NERoomKit.getInstance().initialize(this, options, new NECallback2<Unit>() {
@Override
public void onSuccess(@Nullable Unit unit) {
super.onSuccess(unit);
}
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
}
});
如果您的 AppKey 对应的服务区域是海外,初始化 NERoom SDK 的示例代码如下:
javaString appKey = "your appKey";
String roomServerUrl = "https://roomkit-sg.netease.im/";
HashMap<String, Object> extras = new HashMap<>();
NEServerConfig serverConfig = new NEServerConfig();
NEIMServerConfig imServerConfig = new NEIMServerConfig();
imServerConfig.setLink("link-sg.netease.im:7000");
imServerConfig.setLbs("https://lbs.netease.im/lbs/conf.jsp");
imServerConfig.setNosLbs("http://wannos.127.net/lbs");
imServerConfig.setNosDownloader("{bucket}-nosdn.netease.im/{object}");
imServerConfig.setNosUploader("https://nosup-hz1.127.net");
imServerConfig.setNosUploaderHost("nosup-hz1.127.net");
imServerConfig.setHttpsEnabled(true);
serverConfig.setImServerConfig(imServerConfig);
NERoomKitServerConfig roomKitServerConfig = new NERoomKitServerConfig();
roomKitServerConfig.setRoomServer(roomServerUrl);
serverConfig.setRoomKitServerConfig(roomKitServerConfig);
NERoomKitOptions options = new NERoomKitOptions(appKey, false, serverConfig, "", extras);
NERoomKit.getInstance()
.initialize(
this, options, new NECallback2<Unit>() {
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
}
@Override
public void onSuccess(@Nullable Unit data) {
super.onSuccess(data);
}
});
- 若您使用 私有化 环境,则参考以下步骤进行初始化。
调用 initialize
方法初始化 NERoom 时,配置 NERoomKitOptions
的 serverUrl
参数为私有化服务器地址。示例代码如下:
javaString appKey = "your appKey";
HashMap<String, Object> extras = new HashMap<>();
NERoomKitOptions options = new NERoomKitOptions(appKey, false, null, serverUrl, extras);
NERoomKit.getInstance()
.initialize(
this, options, new NECallback2<Unit>() {
@Override
public void onError(int code, @Nullable String message) {
super.onError(code, message);
}
@Override
public void onSuccess(@Nullable Unit data) {
super.onSuccess(data);
}
});
私有云服务器部署完成后,网易云信会提供给您对应的 NERoom 私有化配置文件(JSON 类型)。您在初始化 NERoom SDK 时,需要进行相关的配置,以便 SDK 能接入到目标私有云服务器上。具体配置步骤如下:
-
将配置文件重命名为
xkit_server.config
,并在构建项目前将配置文件添加到工程中 app 模块的 assets 目录下。 -
调用
initialze
方法初始化 NERoom SDK 时,在xkit_server.config
配置文件中,将NERoomKitOptions
的第二个参数useAssetServerConfig
设置为true
。示例代码如下:
String appKey = "your appKey"; HashMap<String, Object> extras = new HashMap<>(); NERoomKitOptions options = new NERoomKitOptions(appKey, true, null, "", extras); NERoomKit.getInstance() .initialize( this, options, new NECallback2<Unit>() { @Override public void onError(int code, @Nullable String message) { super.onError(code, message); } @Override public void onSuccess(@Nullable Unit data) { super.onSuccess(data); } });