实时音视频

  • 实时音视频 > 快速入门 > Android >开发准备

    开发准备

    最近更新时间: 2024-11-19 14:57:20

    本文主要介绍开发前的准备工作,包括开发环境的要求、SDK 的导入等。

    前提条件

    设备及系统要求

    • 系统要求:Android 4.3 (API 18) 及以上
    • Java 版本: Java 8+

    下载并导入实时音视频 SDK

    SDK 可通过公有 repo 下载获取。

    Repo 中主要包含 demo 示例代码、SDK jar 包,以及 SDK 依赖的动态库文件。 其中,releases 目录下是需要拷贝到您的 Android 工程的所有文件,以目前主流的 armeabi-v7a 架构为例,具体如下:

    文件名称功能大小备注
    qndroid-rtc-x.y.z.jarSDK 库785 KB必须依赖
    libqndroid_rtc.so连麦9.36 MB必须依赖
    libqnquic.so信令协议2.2M建议依赖
    libqcrash.so崩溃搜集49.8 KB建议依赖
    libqndroid_beauty.so美颜442 KB不用自带美颜,可以不依赖
    libqndroid_amix.so混音335 KB不用混音功能,可以不依赖

    将 RTC SDK 集成到 App 后,App 的增量大小如下 (包含默认美颜包):

    • armeabi-v7a : 5.4 MB
    • arm64-v8a : 6.1 MB
    • x86 : 6.1 MB
    • 将 qndroid-rtc-x.y.z.jar 包拷贝到您的工程的 libs 目录下,最新版本可查看版本更新日志获取。
    • 将动态库拷贝到您的工程对应的目录下,例如:armeabi-v7a 目录下的 so 则拷贝到工程的 jniLibs/armeabi-v7a 目录下

    具体可以参考 SDK 包含的 demo 工程,集成后的工程示例如下:

    SDK 集成目录

    修改 build.gradle

    打开工程目录下的 build.gradle,确保已经添加了如下 sdk 的库依赖,如下所示:

    dependencies {
        implementation files('libs/qndroid-rtc-x.y.z.jar')
    }
    

    添加对 Java8 语言功能的支持:

    android {
        ...
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
    }
    

    关于 dns 解析库的依赖,根据您使用版本的不同,需要依赖的具体版本信息如下:

    • 如果您使用的版本是 v5.0.1+,则不再需要依赖 dns 解析库。
    • 如果您使用的版本是 v4.0.2,则需要依赖 1.0.0 版本 dns 解析库
    • 如果您使用的版本是 v2.5.0+ 以及 v5.0.0,则需要依赖 0.2.17 版本 dns 解析库

    依赖示例如下:

    dependencies {
        implementation 'com.qiniu:happy-dns:1.0.0'
    }
    

    添加混淆

    如果工程中添加了混淆,则七牛的包也需要添加混淆规则。

    若您使用 v5.2.4 之前的版本,则混淆规则如下:

    -keep class org.webrtc.** {*;}
    -dontwarn org.webrtc.**
    -keep class com.qiniu.droid.rtc.**{*;}
    -keep interface com.qiniu.droid.rtc.**{*;}
    

    若您使用 v5.2.4 的版本,则混淆规则如下:

    -keep class org.qnwebrtc.** {*;}
    -dontwarn org.qnwebrtc.**
    -keep class com.qiniu.droid.rtc.**{*;}
    -keep interface com.qiniu.droid.rtc.**{*;}
    

    若您使用的是 v5.2.5 及之后的版本,则混淆规则如下:

    -keep class org.qnwebrtc.** {*;}
    -dontwarn org.qnwebrtc.**
    -keep class com.qiniu.droid.rtc.**{*;}
    -keep class com.qiniu.droid.qcrash.**{*;}
    -keep interface com.qiniu.droid.rtc.**{*;}
    

    添加相关权限

    在工程的 AndroidManifest.xml 中增加如下 uses-permission 声明:

    <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.BLUETOOTH" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    

    如果您的应用适配了 API 31 及以上的版本, 为了在通话过程中使用蓝牙耳机设备, 请以以下方式适配:

    <uses-permission android:name="android.permission.BLUETOOTH"
            android:maxSdkVersion="30" />
    <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
    

    如果您的应用以 Android 14 或更高版本为目标平台,在使用屏幕录制功能时,应用清单必须包含权限声明 mediaProjection 前台服务类型:

    <manifest ...>
        <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
        <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
        <application ...>
            <service
                android:name=".MyMediaProjectionService"
                android:foregroundServiceType="mediaProjection"
                android:exported="false">
            </service>
        </application>
    </manifest>
    

    从 Android 6.0 (API 23) 开始,用户需要在应用运行时授予权限,而不是在应用安装时授予,同时权限分为正常权限和危险权限两种类型。在实时音视频 SDK 中,用户需要在进入音视频通话前选择一个适当的时机动态申请 CAMERARECORD_AUDIOBLUETOOTH_CONNECT 权限,关于权限申请,具体可参考 Android 官方文档

    以上内容是否对您有帮助?
  • Qvm free helper
    Close