Skip to main content

Android 移动端投屏 开发文档

文档版本: v3 | 更新日期: 2026-01-29


一、环境准备

1. 下载所需文件

Android WIN 投屏需要下载的文件下载地址:安卓投屏_sdk_20260113.zip

2. 环境准备

  • 开发工具: 需匹配 gradle 版本,推荐使用兼容 gradle 7.1.2 的 Android Studio 版本,如 Arctic Fox 或 Bumblebee,避免版本过老或过新导致兼容性问题)。

  • Gradle 版本:项目指定 classpath 为com.android.tools.build:gradle:7.1.2,无需手动修改,项目已配置对应版本。

  • 依赖支持:com.android.support:support-v4:28.0.0(SDK 核心依赖,需确保配置正确)。

3. 导入项目

目录结构

以下是 Android_SDK 的完整目录,帮助您理解如何组织和使用SDK文件:

sdk_20260113/
├── demo/ // 示例项目目录(可直接导入Android Studio)
│ ├── .gradle/
│ │ ├── 7.3.3/
│ │ │ ├── checksums/
│ │ │ │ ├── checksums.lock
│ │ │ │ ├── md5-checksums.bin
│ │ │ │ └── sha1-checksums.bin
│ │ │ ├── dependencies-accessors/
│ │ │ │ ├── dependencies-accessors.lock
│ │ │ │ └── gc.properties
│ │ │ ├── executionHistory/
│ │ │ │ ├── executionHistory.bin
│ │ │ │ └── executionHistory.lock
│ │ │ ├── fileChanges/
│ │ │ │ └── last-build.bin
│ │ │ ├── fileHashes/
│ │ │ │ ├── fileHashes.bin
│ │ │ │ ├── fileHashes.lock
│ │ │ │ └── resourceHashesCache.bin
│ │ │ ├── vcsMetadata/
│ │ │ │ └── gc.properties
│ │ │ ├── buildOutputCleanup/
│ │ │ │ ├── buildOutputCleanup.lock
│ │ │ │ ├── cache.properties
│ │ │ │ └── outputFiles.bin
│ │ │ ├── checksums/
│ │ │ │ ├── checksums.lock
│ │ │ │ └── sha1-checksums.bin
│ │ │ ├── configuration-cache/
│ │ │ │ └── gc.properties
│ │ │ ├── vcs-1/
│ │ │ │ └── gc.properties
│ │ │ ├── vcsWorkingDirs/
│ │ │ │ └── gc.properties
│ │ │ └── file-system.probe
│ ├── .idea/
│ │ ├── caches/
│ │ │ ├── build_file_checksums.ser
│ │ │ │ └── gradlie_models.ser
│ │ ├── code/
│ ├── app/ // 应用模块核心目录
│ │ ├── libs/ // SDK依赖存放目录(含lgDeviceSdk相关aar文件)
│ │ │ ├── lgDeviceSdk_20240129.aar
│ │ │ └── lgDeviceSdk_20260113.aar
│ │ ├── src/ // 源代码、资源文件、配置文件目录
│ │ │ ├── main/
│ │ │ │ ├── java/
│ │ │ │ │ └── com/
│ │ │ │ │ └── huang/
│ │ │ │ │ └── demo/
│ │ │ │ │ ├── devicesdk/
│ │ │ │ │ │ └── DeviceControlActivity.java
│ │ │ │ │ └── MainActivity.java
│ │ │ │ ├── res/
│ │ │ │ │ ├── drawable/
│ │ │ │ │ ├── drawable-xhdpi/
│ │ │ │ │ │ └── ic_launcher.png
│ │ │ │ │ ├── layout/
│ │ │ │ │ │ ├── activity_demo.xml
│ │ │ │ │ │ └── activity_edit.xml
│ │ │ │ │ └── values/
│ │ │ │ │ ├── strings.xml
│ │ │ │ │ └── styles.xml
│ │ │ │ └── AndroidManifest.xml
│ │ ├── build.gradle // 模块级构建配置文件
│ │ ├── percentlib.iml
│ │ └── proguard-rules.pro
│ ├── build/
│ │ ├── intermediates/
│ │ │ ├── lint-cache/
│ │ │ │ ├── maven.google/
│ │ │ │ │ ├── com/
│ │ │ │ │ └── master-index.xml
│ │ │ │ └── sdk-registry.xml/
│ │ │ │ └── sdk-registry.xml
│ │ │ └── proguard-files/
│ │ │ ├── proguard-android-optimize.txt-3.2.1
│ │ │ ├── proguard-android.txt-3.2.1
│ │ │ └── proguard-defaults.txt-3.2.1
│ ├── gradle/ // Gradle包装器目录
│ │ └── wrapper/
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
│ ├── build.gradle // 项目级构建配置文件
│ ├── gradlew
│ ├── gradlew.bat
│ ├── import-summary.txt
│ ├── local.properties
│ └── settings.gradle // 项目模块配置文件
├── android_sdk_开发文档_20260112.doc // 旧版SDK说明文档
├── lgDeviceSdk_20260113.aar // V1.3版本SDK核心文件
└── 使用说明_20260113.pdf // 新版SDK详细说明文档

二、 Android Studio 项目导入步骤

1. 打开项目

  • 启动 Android Studio,点击 Open (或 File -> Open)。

  • 在文件浏览器中选择sdk_20260113目录,点击「OK」。

  • 等待项目加载完成,Android Studio 会自动加载 gradle 配置并下载依赖,需确保网络通畅,同步完成后无红叉报错。

2. 项目配置验证

⚠️ sdk_20260113 文件中的 demo 基本配置已完成,无需额外操作,可跳过这一部分直接跳到四、 启动安卓投屏。如有其他需求,可查看安卓投屏_sdk_20260113/使用说明_20260113.pdf安卓投屏\_sdk_20260113/android_sdk*开发文档\_20260112.doc

检查SDK依赖:打开app/libs文件,复制 lgDeviceSdk 到 libs 目录中。

验证 build.gradle 配置:模块级 build.gradle(demo/app/build.gradle)中新增如下配置:

android {
repositories {
flatDir {
dirs 'libs'
}
}
}

implementation 'com.android.support:support-v4:28.0.0'
implementation(name:' lgDeviceSdk', ext:'aar')

权限配置检查:打开app/src/main/AndroidManifest.xml,确认已添加相机和录音权限(若需使用相关功能):

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

三、 核心功能开发流程(基于 V1.3 版本 SDK)

1. SDK 初始化

  • 在 Android Studio 左侧「Project」面板中,展开项目目录: demo → app → src → main → java → com → huang → demo → MainActivity.java

  • 双击 MainActivity.java,在右侧编辑区打开该文件。找到 @Override 方法,tianjia SDK 初始化代码逻辑:

//内网测试
DeviceSdkInstance.getInstance().initSdk(getApplicationContext() {
@Override
public void initFinish(boolean b) {
//初始化结果
Log.e(TAG, "init end:" + b);
}

2. 新建DeviceControlActivity

  • 在 Android Studio 左侧「Project」面板中,展开项目目录: demo → app → src → main → java → com → huang → demo → devicesd,在该目录下新建 DeviceControlActivity.java 文件并继承BaseDeviceControlActivity。

注:BaseDeviceControlActivity类中部分方法

a. 在DeviceControlActivity中可以通过setContentView新增自定义view

b. goFinish(), 控制结束时回调

c.pageGoBehind(),当手机页面切换导致传屏终止时回调,用户自行退出或者出错时不会回调此方法

如果不关注以上信息,可以不用定义 DeviceControlActivity,直接进入3. 连接设备。

3. 连接设备

  • 配置连接参数:通过 ConnectInfo 类封装连接信息(IP、端口、令牌等):
textView.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
ConnectInfo info = new ConnectInfo("ip", 1552, 1552, 1552, 1552);
//设置令牌
info.setPass("token");
//设置自定义传参
info.setIntent(intent);
DeviceSdkInstance.getInstance().startConnectDevice(info);
}
});

端口说明

参数类型含义
ipstringandroid容器的ip
port1int视频流端口 tcp
port2int控制流端口 udp
port3int摄像头的端口 tcp (可选参数)
port4int摄像头端口 udp(可选参数)
Tokenstring鉴权令牌 (可选参数)

说明:

端口号存在两种情况:

  • 若android容器为独立ip,则端口是固定值

    • port1:10000

    • port2:10001

    • port3:10006

    • port4:10007

  • 若android容器为共享主机IP 则端口计算的规则是:

    • Port1(tcp):10000+ index*3

    • Port2(udp):10001 + index*3

    • Port3(tcp): 11011 + (index-1) * 10

    • Port4(udp): 11012 + (index-1) * 10

      其中index为坑位索引编号

  • Token: 鉴权令牌 (可选参数)

    与SDK配合使用,可以通过调用SDK的方法设置访问令牌,实现访问的鉴权。如果不需要鉴权就不需要传递此参数。

部分方法说明

  • initSdk():初始化 sdk。

  • isInited():判断 sdk 是否初始化过。

  • startConnectDevice():连接设备,接口回调的状态可以定义动画等操作,需要在 UI 线程中处理,成功后设备会自动到控制页面。

  • releaseSdk():释放 sdk,当不再需要连接设备时,可释放 sdk,释放后如果再使用需要重新初始化。

  • setScreenOrientation():在连接设备前,设置连接过程的屏幕方向,默认横屏, true=>横屏, false=>竖屏。

4. 自定义 UI

如果需要较大范围的自定义控制页面的界面和控制,需要走本步骤实现。

(1) 在应用包名 .devicesdk 目录下,新 建CustomDeviceControlActivity并继承 CustomBaseDeviceControlActivity,并在 AndroidManifest.xml 中注册

(2) 连接设备时需要设置 setCustomUi(true)

(3) 自定义 UI,CustomDeviceControlActivity可调用的方法如下:

方法名作用补充
void initVideoContainer(FrameLayout contrainer);提供基础控制的 UI 容器必须调用
void showConnectLoading()显示 “连接中” 加载动画发起连接前(startConnectDevice 之前)调用
void hideConnectLoading()隐藏加载动画
void sendHomeEvent()发送 “Home 键” 事件
void sendTaskEvent()发送 “任务栏” 事件
void sendBackEvent()返回事件
void sendVoiceUpEvent()音量加事件
void sendVoiceDownEvent()音量减事件
void switchCamera()使用相机功能时切换摄像头
boolean cameraIsOpened()相机是否打开
boolean audioIsOpened()录音是否打开
boolean needShowAskOpenCameraOrAudioDialog()开启相机或录音前是否需要弹窗询问
showAskOpenCameraOrAudioDialog()显示自定义询问弹窗
selectOpenCameraOrAudio()允许开启相机或录音询问弹窗点击后调用
selectDenyOpenCameraOrAudio()拒绝开启相机或录音询问弹窗点击后调用
void cameraOpened()相机开启
void cameraClosed()相机关闭
void audioOpened()录音开启
void audioClosed()录音关闭
quitControl()结束控制,退出页面

四、 启动安卓投屏

步骤 1:启动模拟器:

  • 点击 Android Studio 顶部工具栏的「Device Manager」(手机图标)

  • 选择已创建的模拟器(如「Medium Phone API 36.1」),点击右侧「启动」按钮(绿色三角形

  • 等待模拟器启动完成(需几分钟,首次启动较慢)。

步骤 2:运行项目(启动应用):

  • 点击 Android Studio 顶部工具栏的「Run」按钮(绿色三角形图标,快捷键 Shift + F10

  • 等待项目编译和安装(首次运行会编译所有代码,需几十秒,后续运行会更快)。

示例图: 安卓投屏.png