本文介绍在Android端通过低代码集成(含UI)方式实现主播端推流和观众端观看直播的功能。

背景信息

主播端推流和观众端观看是互动直播的基础场景。从集成的角度看,两个场景是独立于彼此的。用户可根据业务需要选择集成两个场景或其中一个场景。例如,只需要集成主播端推流的用户可以只集成主播端,避免接入不需要的模块而增加包大小。

前提条件

客户端集成前,请确保已经通过控制台创建应用并获取客户端集成需要的信息(应用ID,APP Key,低代码集成服务地址,低代码集成服务密钥)。创建指引请参见创建应用

环境要求

Android端集成对环境的要求如下:

  • 系统版本:仅支持Android 5.0及以上版本。
  • API版本:仅支持21及以上版本。
  • CPU架构:仅支持实体设备架构armeabi-v7a、arm64-v8a。
注意 不支持视频采集旋转,不支持USB外接摄像头。

主播端推流

  1. 基于Maven添加SDK远程依赖。
    1. 添加阿里云依赖仓库。

      将下面的依赖库添加到项目工程根目录已有的build.gradle文件中。

      // 仓库地址
      allprojects {
          repositories {
              maven { url 'https://maven.aliyun.com/nexus/content/repositories/releases' }
          }
      }
    2. 添加SDK远程依赖。

      将下面的依赖库添加到项目工程的app/build.gradle文件中。

      dependencies {
          def LATEST_VERSION = ''
          api "com.aliyun.roompaas.biz:liveroom:${LATEST_VERSION}"
      }
      说明 美颜库Queen的'1.9.1-official-pro'版本是免授权的高级美颜版本,详情请参见美颜特效SDK
  2. 配置应用权限。
    主播推流直播,需要获取设备本向的摄像头使用权限,麦克风的使用仅限,WIFI网络的使用权限。在工程目录的app/src/main/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" />
  3. 添加混淆配置(可选)。

    Android端SDK使用了反射,如果您的应用中打开了混淆开关,则需要添加proguard配置。打开工程的 app/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*
  4. 接入代码。
    1. 添加SDK类引用。
      import com.aliyun.standard.liveroom.lib.LivePrototype;
    2. 全局初始化。需要传入控制台创建应用后获得的应用ID、对应Android端的APP Key、低代码集成服务地址,低代码集成服务密钥。
      说明 如果您已经完成应用创建,请登录低代码音视频工厂控制台。打开应用管理页面,点击目标应用操作列的集成方式,即可获取集成需要的配置信息。
      示例代码
      // 低代码接入Android端初始化及认证
      LivePrototype.InitParam param = new LivePrototype.InitParam();
      param.appId = "<应用ID>";  //必传,在控制台创建低代码互动直播应用后获取的应用ID;
      param.appKey = "<APP Key>";  //必传,在控制台创建低代码互动直播应用后获取的Android端的App Key;
      param.serverHost = "<低代码集成服务地址>"; //必传,在控制台创建低代码互动直播应用后获取的低代码集成服务地址;
      param.serverSecret = "<低代码集成服务密钥>"; //必传,在控制台创建低代码互动直播应用后获取的低代码集成服务密钥;
      param.userId = "<用户身份标识>";//必传,自定义用户ID,仅支持英文和数字,最大长度36位;
      LivePrototype.getInstance().init(this, param);
    3. 全局初始化成功后,配置LivePrototype.OpenLiveParam参数。
      注意 主播端集成成功后,回调中会返回liveID。请记录liveID作为观众端集成的必要输入。
      示例代码
      // 主播端:开启直播
      String currentUserId = Const.getCurrentUserId();
      LivePrototype.OpenLiveParam param = new LivePrototype.OpenLiveParam();
      param.liveId = "xxx"; //在主播侧,liveId非必传,为空时内部会自动创建新直播
      param.role = LivePrototype.Role.ANCHOR; //主播侧必填LivePrototype.Role.ANCHOR
      param.nick = "用户" + currentUserId; // 用户自己账号系统
      LivePrototype.getInstance().setup(this, param, new Callback<String>() {
          @Override
          public void onSuccess(String liveId) {
              // 此处获取到主播liveId。观众进入直播间时,将此liveId配置到观众端参数
          }
          @Override
          public void onError(String errorMsg) {
              
          }
      });
    执行结果
    至此,您已搭建好一个完整的互动直播的主播端直播推流逻辑。Android Studio编译并在真机运行后可以看到开始直播界面(如下左图所示)。点击开始直播后进入直播界面(如右图所示)。Android低代码互动主播页面

观众端观看直播

  1. 基于Maven添加SDK远程依赖。
    1. 添加阿里云依赖仓库。

      将下面的依赖库添加到项目工程根目录已有的build.gradle文件中。

      // 仓库地址
      allprojects {
          repositories {
              maven { url 'https://maven.aliyun.com/nexus/content/repositories/releases' }
          }
      }
    2. 添加SDK远程依赖。

      将下面的依赖库添加到项目工程的app/build.gradle中。

      dependencies {
          def LATEST_VERSION = ''
          api "com.aliyun.roompaas.biz:liveroom:${LATEST_VERSION}"
      }
  2. 接入代码。
    1. 添加SDK类引用。
      import com.aliyun.standard.liveroom.lib.LivePrototype
    2. 全局初始化。需要传入控制台创建应用后获得的应用ID、对应Android端的APP Key、低代码集成服务地址,低代码集成服务密钥。
      说明 如果您已经完成应用创建,请登录低代码音视频工厂控制台。打开应用管理页面,点击目标应用操作列的集成方式,即可获取集成需要的配置信息。
      示例代码
      // 低代码接入Android端初始化及认证
      LivePrototype.InitParam param = new LivePrototype.InitParam();
      param.appId = "<应用ID>";  //必传,在控制台创建低代码互动直播应用后获取的应用ID;
      param.appKey = "<APP Key>";  //必传,在控制台创建低代码互动直播应用后获取的iOS端的App Key;
      param.serverHost = "<低代码集成服务地址>"; //必传,在控制台创建低代码互动直播应用后获取的低代码集成服务地址;
      param.serverSecret = "<低代码集成服务密钥>"; //必传,在控制台创建低代码互动直播应用后获取的低代码集成服务密钥;
      param.userId = "<用户身份标识>";//必传,自定义用户ID,仅支持英文和数字,最大长度36位;
      LivePrototype.getInstance().init(this, param);
    3. 全局初始化成功后,配置LivePrototype.OpenLiveParam参数。
      注意 观众端集成时,liveID为必传参数。其获取方式与您的集成场景有关,详情如下:
      • 如果您集成了本产品的主播端,并记录了回调信息中的liveID值,可直接填写记录的值。
      • 如果您集成了本产品的主播端,但没有记录回调信息中的liveID值,可调用GetLiveRoom - 获取直播详情接口获取应用下所有的直播信息。然后选取对应liveID值填写。
      • 如果您未使用本产品的主播端,可调用CreateLiveRoom - 创建直播接口,填写与您直播间相关的必要信息。然后使用接口返回的liveID值填写。
      示例代码
      // 观众端:观看直播
      String liveId = "xxx";//在观众侧,liveId必传。根据您的集成场景获取,详情请参见上述注意事项。
      String currentUserId = Const.getCurrentUserId();
      LivePrototype.OpenLiveParam param = new LivePrototype.OpenLiveParam();
      param.role = LivePrototype.Role.AUDIENCE; //观众侧必传LivePrototype.Role.AUDIENCE
      param.nick = "用户" + currentUserId;
      param.liveId = liveId;
      LivePrototype.getInstance().setup(this, param, new Callback<String>() {
          @Override
          public void onSuccess(String liveId) {
              
          }
          @Override
          public void onError(String errorMsg) {
          }
      });
    执行结果
    至此,您已搭建好一个完整的互动直播观众端播流(观看直播)逻辑。Android Studio编译并在真机运行后可以看到以下界面。Android低代码互动直播观众观看

开启直播回放功能

确定控制台已经开启回放功能(请参见配置直播回看)后,添加如下配置:

LivePrototype.OpenLiveParam param = new LivePrototype.OpenLiveParam();
// 略...
param.supportPlayback = true;
LivePrototype.getInstance().setup(context, param, callback);

后续步骤

低代码集成(含UI)场景下,完成主播端及观众端集成即可使用互动直播产品。如果低代码形态的功能无法满足业务需求,您可以通过进阶开发实现更高级的功能。详情请参见互动直播进阶开发