本文分享在Android端集成即构屏幕共享SDK教程。即构屏幕共享SDK可实现以下共享场景:
- 屏幕共享:支持对单个或多个屏幕进行完整共享,多屏共享可随意快速切换。
- 区域共享:支持圈定屏幕任意区域进行共享,避免不必要信息的流出。
- 窗口共享:支持对单个程序窗口进行共享,并自动过滤非窗口内容。
- 窗口内区域共享:可圈定目标窗口的任意区域进行共享,并支持自动过滤区域外内容。
- 多窗口共享:支持同时共享两个窗口,需要多窗口配合场景下可更高效地进行演示。
- 窗口缩略图:在屏幕、窗口共享时,支持窗口缩略图辅助进行快速选择 。
集成屏幕共享SDK步骤
准备环境
在开始集成 ZEGO Express SDK 前,请确保开发环境满足以下要求:
- Android Studio 2020.3.1 或以上版本。
- Android SDK 25、Android SDK Build-Tools 25.0.2、Android SDK Platform-Tools 25.x.x 或以上版本。
- Android 4.4 或以上版本,且支持音视频的 Android 设备。
- Android 设备已经连接到 Internet。
集成 SDK
2.1 (可选)新建项目
- 打开 Android Studio,选择 “File > New > New Project” 菜单。
- 填写项目名及项目存储路径。
- 其它按照默认设置,单击 “Next”,最后单击 “Finish” 完成新工程创建。
2.2 导入 SDK
目前支持的平台架构包括:armeabi-v7a、arm64-v8a、x86、x86_64。
开发者可通过以下任意一种方式实现集成 SDK。
方式一:使用 JitPack 自动集成 SDK
- 进入项目根目录,打开 “settings.gradle” 文件,在 “dependencyResolutionManagement” 中加入如下代码。
...
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
maven { url 'https://jitpack.io' }
google()
mavenCentral()
}
}
若您的 Android Gradle Plugin 版本低于 v7.1.0,请按照如下方式操作:
进入项目根目录,打开 “build.gradle” 文件,在 “allprojects” 中加入如下代码。
...
allprojects {
repositories {
maven { url 'https://www.jitpack.io' }
google()
mavenCentral()
}
}
2. 进入 “app” 目录,打开 “build.gradle” 文件,在 “dependencies” 中添加 implementation 'com.github.zegolibrary:express-video:3.+'
,这样能获取到最新的版本,如果需要下载指定版本,请从 https://jitpack.io/#zegolibrary/express-video 查询具体版本号,并将 3.+
修改为指定的版本号。
...
dependencies {
...
implementation 'com.github.zegolibrary:express-video:3.+'
}
方式二:复制 SDK 文件手动集成
- 请参考 下载 SDK 包 ,下载最新版本的 SDK。
- 解压 SDK 至项目目录,如 “app/libs”。
3. 添加 SDK 引用,进入 “app” 目录,打开 “build.gradle” 文件。
- 在 “defaultConfig” 节点添加 “ndk” 节点,指定支持的架构。
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
根据实际情况决定要支持的架构。通常在发布 App 时只需要保留 “armeabi-v7a” 和 “arm64-v8a” 即可,可以减少 APK 包大小。
在 “android” 节点添加 “sourceSets” 节点,指定 “libs” 所在目录。 示例代码中 “libs” 目录仅为举例,开发者可根据实际路径填写。
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
在 “dependencies” 节点引入 “libs” 下所有的 jar。
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
......
}
设置权限
根据实际应用需要,设置应用所需权限。
进入 “app/src/main” 目录,打开 “AndroidManifest.xml” 文件,添加权限。
根据实际应用需要,设置应用所需权限。
进入 “app/src/main” 目录,打开 “AndroidManifest.xml” 文件,添加权限。
<!-- SDK 必须使用的权限 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<!-- App 需要使用的部分权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
String[] permissionNeeded = {
"android.permission.CAMERA",
"android.permission.RECORD_AUDIO"};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ContextCompat.checkSelfPermission(this, "android.permission.CAMERA") != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, "android.permission.RECORD_AUDIO") != PackageManager.PERMISSION_GRANTED) {
requestPermissions(permissionNeeded, 101);
}
}
防止混淆代码
在 “proguard-rules.pro” 文件中,为 SDK 添加 -keep
类的配置,防止混淆 SDK 公共类名称。
-keep class **.zego.**{*;}
本文来自作者投稿,如需转载,请注明出处:实时互动网https://www.nxrte.com/jishu/9558.html