本文介紹Android端快速接入音視頻通話的操作步驟及相關API參考。
源碼說明
前提條件
在實現音視頻通話前需先開通視頻直播服務,并集成互動消息以及直播連麥功能,請按照以下方式進行集成。
開通視頻直播服務
請參照下述步驟開通視頻直播服務,詳細說明請參見開通與購買視頻直播。
登錄視頻直播產品詳情頁,單擊立即開通,進入開通頁面。
在視頻直播開通頁,選擇計費方式按使用流量計費或按帶寬峰值計費,勾選《視頻直播服務協議》并單擊立即開通,控制臺即可使用
接入互動消息
創建互動消息應用,具體操作請參見創建應用。
獲取互動消息Token,請參考實時音視頻AppServer的獲取IM建連的token和源碼getNewImToken。
接入實時音視頻
開通實時音視頻,具體操作請參考文檔直播連麥快速入門。
獲取實時音視頻Token,需調用getRtcAuthToken接口進行獲取,實現原理參考Token鑒權。具體接口調用方式如下:
接口說明
請求協議:HTTP/HTTPS
請求Path:/api/v1/live/getRtcAuthToken
是否需要授權:由客戶自行決定
請求Method:POST
請求ContentType:JSON
請求參數
名稱
類型
是否必填
示例值
描述
user_id
String
是
userid****
用戶ID,由用戶自定義,支持數字、大小寫字母、短劃線(-)、下劃線(_),不超過64個字符。
room_id
String
是
devicei****
房間(或頻道)ID,由用戶自定義,支持數字、大小寫字母、短劃線(-)、下劃線(_),不超過64個字符。主播和連麥觀眾需使用同一個房間號。
返回數據
名稱
類型
示例值
描述
code
Integer
200
業務響應碼。參考HTTP響應碼。
auth_token
String
a06afe07*******
用于長連接建連的Token。
timestamp
Long
1693967******
當前時間戳。單位:秒。
示例
請求示例
{ "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
源碼下載后,進入
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"; //您的服務器域名地址, 必填 ... }
Android Studio導入工程,選擇菜單>File>New>Import Project。
選擇Android工程根目錄。
編譯運行。
快速開發通話功能
集成源碼
導入AUICall。
倉庫代碼下載后,Android Studio菜單選擇:File>New>Import Module,導入AUICall文件夾。
修改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為您工程適配的版本 }
等待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)加入音視頻通話客戶支持群聯系我們。