本文主要介绍如何将 RTC Android SDK 视频通话集成到你的项目中以及相关注意事项。
开发环境要求
- Android SDK API Level ≥ 19
- 如果你的 App 以 Android 9 及以上为目标平台,请关注 Android 隐私权变更。
- Android Studio 3.0 或以上版本。
- 一个有效的 开发者账号。
运行环境要求
你需要有一台 Android 真机。
获取 AppID
参考以下步骤获取一个 AppID。若已经拥有 AppID,请跳过当前步骤,直接查看快速集成。
集成 SDK
选择如下任意一种方式将 SDK 集成到你的项目中。
方法一:使用 MavenCenter() 自动集成
在项目的 /app/build.gradle
文件中,添加如下行:
...
dependencies {
...
// a.b.c.d 请填写具体版本号,如:4.2.2.6
// 可通过 SDK 发版说明取得最新版本号
implementation 'io.anyrtc:rtc:a.b.c.d'
}
请点击查看发版说明获取最新版本号。
方法二:手动复制 SDK 文件
- SDK 下载页面,获取最新版的SDK,然后解压。
- 将 SDK 包内 SDK 路径下的如下文件,拷贝到你的项目路径下:
文件或文件夹 | 项目路径 |
---|---|
rtc-release 文件 | /app/libs/ |
- 在Mould目录下的build.gradle文件增加如下代码
implementation fileTree(dir: 'libs', include: ['*.aar'])
添加项目权限
根据场景需要,在 /app/src/main/AndroidManifest.xml
文件中添加如下行,获取相应的设备权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.ar.tutorials1v1acall">
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
// 如果你的场景中涉及读取外部存储,需添加如下权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
// 如果你使用的是 Android 10.0 及以上设备,还需要添加如下权限:
<uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
...
</manifest>
如果你的 targetSdkVersion ≥ 29
,还需要在 AndroidManifest.xml 文件的 `` 区域添加如下行:
<application
android:requestLegacyExternalStorage="true">
...
</application>
防止代码混淆
在 app/proguard-rules.pro
文件中添加如下行,防止混淆 SDK 的代码:
-keep class org.ar.**{*;}
-keep class org.anyrtc.**{*;}
-keep class org.webrtc.**{*;}
操作流程
本节内容主要介绍如何实现视频通话,提供相关示例代码。
初始化客户端
将获取到的 App ID 添加到 string.xml
文件中的 ar_app_id
一栏。调用 create
方法,传入获取到的 App ID,即可完成初始化 。
使用相同 App ID 的应用才能互相通信。
加入频道
完成初始化后,你就可以调用 joinChannel
方法加入频道。你需要在该方法中传入如下参数:
token
:传入能标识用户角色和权限的 Token。可设为如下一个值:- 临时 Token。临时 Token 服务有效期为 15小时、24 小时、3天、15天不等。你可以在控制台里生成一个临时 Token。
- 在你的服务器端生成的 Token。在安全要求高的场景下,我们推荐你使用此种方式生成的 Token,详见生成 Token。
- 若项目已启用 权限密钥,请使用 Token。请勿将
token
设为 ""。
private fun joinChannel() {
mRtcEngine?.joinChannel(getString(R.string.ar_token),channelId,"",userId)
}
视频直播
在加入频道后,对频道内的远端用户进行监听。
//加入频道成功
override fun onJoinChannelSuccess(channel: String?, uid: String?, elapsed: Int) {
super.onJoinChannelSuccess(channel, uid, elapsed)
}
// 远端用户离开频道
override fun onUserOffline(uid: String?, reason: Int) {
super.onUserOffline(uid, reason)
}
//远端用户视频状态
override fun onRemoteVideoStateChanged(uid: String?, state: Int, reason: Int, elapsed: Int) {
super.onRemoteVideoStateChanged(uid, state, reason, elapsed)
}
离开频道
根据场景需要,如结束通话、关闭 App 或 App 切换至后台时,调用 leaveChannel 离开当前通话频道。
mRtcEngine?.leaveChannel()
}
释放
RtcEngine.destroy()
开发注意事项
- 请注意安卓6.0后的权限获取