本文介绍了使用标准集成(无UI)方式接入Android端的方法。适用于互动直播、互动课堂等场景产品。
前提条件
环境要求
系统版本:支持Android 5.0及以上版本。
API版本:支持21及以上版本。
CPU架构:支持实体设备架构armeabi-v7a、arm64-v8a。
其他:不支持视频采集旋转,不支持USB外接摄像头。
集成步骤
流程概览
添加SDK依赖 > 添加配置权限 > 添加proguard配置(可选)> 完成工程编码
第一步:添加SDK依赖
SDK依赖可通过远程依赖或文件依赖方式添加。推荐使用远程依赖方式。
方式1:远程添加依赖(推荐)
1.配置依赖仓库。
// 仓库地址 allprojects { repositories { maven { url 'https://maven.aliyun.com/nexus/content/repositories/releases' } } }
2.添加SDK依赖。
def LATEST_VERSION = '1.6.0.20220218004'
dependencies { api "com.aliyun.roompaas.biz:biz:${LATEST_VERSION}" api "com.aliyun.roompaas.biz:chat:${LATEST_VERSION}" api "com.aliyun.roompaas.biz:live:${LATEST_VERSION}" }
基于文件添加依赖(不推荐)
1.下载并解压SDK。登录低代码音视频工厂控制台>应用管理>标准集成,下载最新Android端SDK。
2.复制aar文件到主工程下的libs文件夹中。
3.配置aar依赖。在
build.gradle
文件下的dependencies字段下添加依赖配置:implementation fileTree(dir: "libs", include: ["*.jar", ""*.aar""])
4.同步当前工程。
第二步:添加权限配置
添加完SDK依赖后,打开 AndroidManifest.xml
文件,添加如下权限配置。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<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.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
第三步:添加proguard配置(可选,取决于线上应用是否开启混淆)
SDK中使用了反射,如果您的应用中打开了混淆开关,则需要添加proguard配置。请打开 proguard-rules.pro
文件,添加如下-keep类的配置。
-dontnote *.**
-dontwarn *.**
# live sdk
-keep class com.aliyun.** { *; }
-keep class com.alivc.** { *;}
-keep class com.cicada.** { *; }
# lwp
-keep class com.alibaba.dingpaas.** { *; }
-keep class com.dingtalk.mars.** { *; }
-keep class com.dingtalk.bifrost.** { *; }
-keep class com.dingtalk.mobile.** { *; }
-keep class org.android.spdy.** { *; }
# fastjson
-dontwarn com.alibaba.fastjson.**
-keepattributes Signature
-keepattributes *Annotation*
第四步:工程编码
完成SDK初始化。
GetTokenApi.getToken是调用业务服务端的请求。业务服务端结合AccessKey ID和AccessKey Secret通过pop接口调用getLoginToken获取。
RoomEngine.getInstance().init(this, new EngineConfig.Builder() .appId("应用Id【在阿里云本产品控制台应用管理中获取】") .appKey("应用Key【在阿里云本产品控制台应用管理中获取】") .deviceId("设备Id【保持跟getToken时的入参一致,推荐CommonUtil#getDeviceId】") .tokenInfoGetter(new TokenInfoGetter() { @Override public void getTokenInfo(String userId, Callback<TokenInfo> callback) { // 这里通过自己的服务端来获取Token信息 GetTokenApi.getToken(userId, callback); } }) .build(), new Callbacks.Log<>(TAG, "init engine") );
建连认证
RoomEngine.getInstance().auth(userId, new Callback<Void>() { @Override public void onSuccess(Void aVoid) { // 认证成功 } @Override public void onError(String errorMsg) { // 认证失败 } });
房间相关API调用
通过RoomEngine来获取到RoomChannel实例,进而对房间进行相关操作。
通过RoomChannel.getPluginService来获取插件服务,进而调用插件服务相关方法。
// 获取RoomChannel Result<RoomChannel> result = RoomEngine.getInstance().getRoomChannel(roomId); if (!result.success) { // 注意检查返回结果(登录未成功时,会走到这里) showToast(result.errorMsg); return; } roomChannel = result.value; // 获取插件服务 chatService = roomChannel.getPluginService(ChatService.class); liveService = roomChannel.getPluginService(LiveService.class); // 监听事件 roomChannel.setEventHandler(this::onRoomEvent); chatService.setEventHandler(this::onChatEvent); liveService.setEventHandler(this::onLiveEvent); // 进房间 roomChannel.enterRoom(nick, new Callback<Void>() { @Override public void onSuccess(Void data) { RoomDetail roomDetail = roomChannel.getRoomDetail(); onEnterRoomSuccess(roomDetail); } @Override public void onError(String errorMsg) { onEnterRoomError(errorMsg); } });
SDK登出。需要断开长连接通道时,调用RoomEngine.logout进行注销登录。
更多接口请查看Android接口列表。
常见问题
已经集成了阿里播放器,集成场景化SDK时冲突了,如何解决?
SDK内部集成了阿里播放器,对于已经集成过阿里播放器的情况,使用exclude来做排除。以Aliyunplayer5.1.5-full版本为例,在build.gradle文件。
dependencies {
api("com.aliyun.roompaas.biz:liveroom:${VERSION}"){
exclude (group: 'com.aliyun.sdk.android', module: 'AliyunPlayer')
exclude (group: 'com.aliyun.sdk.android', module: 'AlivcArtc')
exclude (group: 'com.aliyun.sdk.android', module: 'AlivcArtp')
exclude (group: 'com.alivc.conan', module: 'AlivcConan')
}
}
android {
packagingOptions {
pickFirst 'lib/armeabi-v7a/liblive-openh264.so'
pickFirst 'lib/arm64-v8a/liblive-openh264.so'
pickFirst 'lib/armeabi-v7a/libalivcffmpeg.so'
pickFirst 'lib/arm64-v8a/libalivcffmpeg.so'
}
}
- 本页导读 (1)