Android端集成

本文介绍了使用低代码集成(含UI)方式快速接入互动课堂Android端的方法。

前提条件

环境要求

  • 系统版本:支持Android 5.0及以上版本。

  • API版本:支持21及以上版本。

  • CPU架构:支持实体设备架构armeabi-v7a、arm64-v8a。

  • 其他:不支持视频采集旋转,不支持USB外接摄像头。

集成步骤

流程概览

添加依赖 > 添加配置权限 > 添加proguard配置(可选)。

第一步:添加依赖

依赖可通过远程依赖或文件依赖方式添加。推荐使用远程依赖方式。

  • 方式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:classroom:${LATEST_VERSION}"
    }
  • 方式2:添加文件依赖

    1.下载并解压SDK。登录低代码音视频工厂控制台>应用管理>低代码集成,下载最新Android端SDK。

    2.复制aar文件到主工程下的libs文件夹中。

    3.配置aar依赖。在build.gradle文件下的dependencies字段下添加代码:

    implementation fileTree(dir: "libs", include: ["*.jar", ""*.aar""])

第二步:添加权限配置

添加完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 文件,添加如下配置。

-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*

# document
-keep class com.aliyun.roompaas.document.exposable.DocumentService
-keep class com.aliyun.roompaas.document.DocumentServiceImpl

# oss
-keep class com.alibaba.sdk.android.oss.** { *; }
-dontwarn okio.**
-dontwarn org.apache.commons.codec.binary.**

开始使用

请您参考下方代码,或到github上查看完整开源工程

初始化

示例代码:

ClassInitParam param = new ClassInitParam();
param.appId = "<应用Id>";  //在阿里云本产品控制台应用管理中获取
param.appKey = "<应用Key>";  //在阿里云本产品控制台应用管理中获取
param.serverHost = "<服务端地址>"; //请参见样板间调用地址使用说明文档,在服务部署完成之后获取“服务调用地址”
param.serverSecret = "<服务端接口密钥>"; //请参见样板间调用地址使用说明文档,在服务部署完成之后获取“密钥”
param.userId = "<用户ID>";//自定义用户id,仅支持英文和数字,最大长度36位
ClassPrototype.INSTANCE.init(this, param, new Callback<Void>() {
    @Override
    public void onSuccess(Void data) {
        toast("INSTANCE.init onSuccess: " + data);
    }

    @Override
    public void onError(String errorMsg) {
        toast("INSTANCE.init onError: " + errorMsg);
    }
});

进入课堂

示例代码:

ClassPrototype.OpenClassParam classParam = new ClassPrototype.OpenClassParam();
classParam.classId = classId;
ClassPrototype.INSTANCE.setup(context, classParam, new Callback<String>() {
    @Override
    public void onSuccess(String data) {
        toast("setUp onSuccess: " + data);
    }

    @Override
    public void onError(String errorMsg) {
        toast("setUp onError: " + errorMsg);
    }
});