Android端快速接入

本文介绍Android端快速接入音视频通话的操作步骤及相关API参考。

源码说明

前提条件

在实现音视频通话前需先开通视频直播服务,并集成互动消息以及直播连麦功能,请按照以下方式进行集成。

  • 开通视频直播服务

    请参照下述步骤开通视频直播服务,详细说明请参见开通与购买视频直播

    1. 登录视频直播产品详情页,单击立即开通,进入开通页面。

    2. 在视频直播开通页,选择计费方式按使用流量计费或按带宽峰值计费,勾选《视频直播服务协议》并单击立即开通,控制台即可使用

  • 接入互动消息

    1. 创建互动消息应用,具体操作请参见创建应用

    2. 获取互动消息Token,请参考实时音视频AppServer的获取IM建连的token和源码getNewImToken

  • 接入实时音视频

    1. 开通实时音视频,具体操作请参考文档直播连麦快速入门

    2. 获取实时音视频Token,需调用getRtcAuthToken接口进行获取,实现原理参考Token鉴权。具体接口调用方式如下:

      1. 接口说明

        • 请求协议:HTTP/HTTPS

        • 请求Path:/api/v1/live/getRtcAuthToken

        • 是否需要授权:由客户自行决定

        • 请求Method:POST

        • 请求ContentType:JSON

      2. 请求参数

        名称

        类型

        是否必填

        示例值

        描述

        user_id

        String

        userid****

        用户ID,由用户自定义,支持数字、大小写字母、短划线(-)、下划线(_),不超过64个字符。

        room_id

        String

        devicei****

        房间(或频道)ID,由用户自定义,支持数字、大小写字母、短划线(-)、下划线(_),不超过64个字符。主播和连麦观众需使用同一个房间号。

      3. 返回数据

        名称

        类型

        示例值

        描述

        code

        Integer

        200

        业务响应码。参考HTTP响应码。

        auth_token

        String

        a06afe07*******

        用于长连接建连的Token。

        timestamp

        Long

        1693967******

        当前时间戳。单位:秒。

      4. 示例

        请求示例

        {
            "user_id": "1234567890",
            "room_id": "fwfwqeqeqwewq"
        }

        正常返回示例

        {
          "code": 200,
          "auth_token": "a06afe07*******",
          "timestamp": 1693967******
        }

环境准备

  • Android Studio 插件版本4.1.2

  • Gradle 6.5

  • Android Studio自带jdk11

源码下载

音视频通话当前为邀测阶段,您可加入音视频通话客户支持群(钉钉群号:36480010946)获取源码下载地址。

源码结构说明

├── Android
│   ├── AUIBaseKits                     //基础组件
│   ├── AUICall                         //场景方案源代码
│   ├── README.md                       // README
│   ├── app                             //主工程模块入口
│   ├── build.gradle                    //工程配置文件
│   ├── config.gradle                   //工程配置文件
│   └── settings.gradle                 //工程配置文件

跑通Demo

  1. 源码下载后,进入AUICall目录下的Java源代码文件夹,找到com.aliyun.auikits.auicall.util.AUICallConfig类,修改几个必填字段值。

    public final class AUICallConfig {
        public static final String APP_ID = "xxx"; //您的AppId, 必填
        public static final String HOST = "xxx"; //您的服务器域名地址, 必填
        ...
    }
  2. Android Studio导入工程,选择菜单>File>New>Import Project1695022883529_C853A010-9010-401e-8F87-D79977FA6CEF.png

  3. 选择Android工程根目录。1695022864299_12CC701E-5CB8-47bb-978A-C6252A15004A.png

  4. 编译运行。ee6679816e8c5b0f3749789b4e72fffc.png

快速开发通话功能

集成源码

  1. 导入AUICall。

    仓库代码下载后,Android Studio菜单选择:File>New>Import Module,导入AUICall文件夹。

  2. 修改AUICall文件夹下的build.gradle的三方库依赖项。

    dependencies {
    	...
        implementation 'androidx.appcompat:appcompat:x.x.x'                     //修改x.x.x为您工程适配的版本
        implementation 'com.google.android.material:material:x.x.x'             //修改x.x.x为您工程适配的版本
        androidTestImplementation 'androidx.test.espresso:espresso-core:x.x.x'  //修改x.x.x为您工程适配的版本
        implementation 'com.aliyun.aio:AliVCSDK_Standard:x.x.x'                  //修改x.x.x为您工程适配的版本
    }
  3. 等待gradle同步完成,完成源码集成。

源码配置

进入AUICall模块下的Java源代码文件夹,找到com.aliyun.auikits.auicall.util.AUICallConfig类,修改几个必填字段值。

public final class AUICallConfig {
    public static final String APP_ID = "xxx"; //您的AppId, 必填
    public static final String HOST = "xxx"; //您的服务器域名地址, 必填
    ...
}

调用API

前面工作完成后,接下来可以根据自身的业务场景和交互,在您的App其他模块或主页上通过通话组件接口快速实现会议通话功能,也可以根据自身的需求修改源码。

  • 1V1通话场景

    AUICall1V1Model model = new AUICall1V1ModelImpl(); //构造单人通话业务接口实例
    ...
    model.call("xxx", AUICall1V1Mode.VIDEO); //视频通话呼叫对方
    ...
    model.accept("xxx"); //接受通话呼叫
    ...
    model.hangup(false); //挂断通话
  • 多人通话/会议场景

    AUICallNVNModel model = new AUICallNVNModelImpl(); //构造多人音视频业务接口实例
    ...
    model.create(new CreateRoomCallback(){ //创建多人音视频通话房间
        public void OnSuccess(String roomId){
            //房间创建成功
        }
    
        public void onError(int code, String msg){
            ...
        }
    });
    ...
    model.join("xxx", true, true); //加入多人音视频通话房间
    ...
    model.invite("xxx"); //邀请用户加入多人音视频通话房间
    ...
    model.leave(); //离开多人音视频通话房间

基于AUIRoomEngine开发高级功能

AUIRoomEngine是一套通用业务解决方案的模型与API,主要针对基于音视频在线实时通信的业务场景,如会议、课堂、通话等。主要目的是为了降低在对接上述业务场景开发时的复杂度,沉淀通用业务技术接口,提升业务开发效率。

AUIRoomEngine基于通话会议场景提供的是无UI细粒度的接口,AUICall基于AUIRoomEngine的API实现包含UI交互的通话功能,如果有更多高级功能的开发,可以基于AUICall进行二次开发,直接调用AUIRoomEngine的API来完成。

相关API

  • AUIRoomEngine

  • AUIRoomEngineObserver

详细接口文档请参见Android端API参考

问题咨询

更多问题咨询及使用说明,请搜索钉钉群(36480010946)加入音视频通话客户支持群联系我们。