# dual-screen **Repository Path**: lu-my/dual-screen ## Basic Information - **Project Name**: dual-screen - **Description**: uniapp安卓原生插件,支持双屏异显、主副屏通讯、工控机双屏控制 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-16 - **Last Updated**: 2026-05-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Dual-Screen Plugin for UniApp ## 项目结构 ``` dual-screen/ ├── README.md # 本说明文件 ├── dual-screen/ # 离线打包 UTS 插件配置(用于 uni_modules) │ ├── src/main/java/ # UTS 源码 │ │ ├── index.kt # 入口文件 │ │ └── hybrid.kt # 核心逻辑 │ └── build.gradle # Gradle 构建配置 ├── uniplugin_module/ # 原生模块源码(编译后生成 AAR) │ ├── src/main/java/ # Java/Kotlin 源码 │ │ └── DualScreenModule.java │ └── build.gradle └── uni-dual-screen/ # UniApp Demo 项目 ├── uni_modules/ # UTS 插件源码 ├── pages/ # 页面 ├── hybrid/ # 副屏 HTML 资源 └── nativePlugins/ # 离线打包的 AAR 插件 ``` ### 目录说明 | 目录 | 说明 | | ------------------- | ------------------------------------------ | | `dual-screen/` | UTS 插件离线打包配置 | | `uniplugin_module/` | 原生模块源码,编译后生成 `dual-screen.aar` | | `uni-dual-screen/` | UniApp Demo 项目,包含插件使用示例 | ## 插件介绍 为 UniApp 开发的 Android 原生插件,用于实现工控机双屏显示功能。支持主屏控制副屏开关、主副屏双向通讯、副屏显示自定义内容(URL 网页或本地 HTML)。 ## 功能特性 - ✅ 双屏检测与管理 - ✅ 主屏控制副屏开关 - ✅ 主副屏双向消息通讯 - ✅ 副屏显示 URL 网页 - ✅ 副屏显示内联 HTML - ✅ 副屏显示本地 HTML 文件 ## 安装方法 ### 1. 离线打包方式(推荐) 将 `uni-dual-screen/uni_modules` 目录复制到你的 UniApp 项目中。 ### 2. 配置 manifest.json 在 `manifest.json` 中添加插件配置: ```json { "app-plus": { "nativePlugins": { "dual-screen": { "type": "module" } } } } ``` ### 3. 打包自定义基座 在 HBuilderX 中选择 `运行` → `运行到手机或模拟器` → `制作自定义调试基座`,勾选 `dual-screen` 插件后打包。 > 插件无需额外声明权限,UniApp 默认已包含所需权限。 ### 4. 修改源码后重新打包 ```powershell cd dual-screen $env:JAVA_HOME="C:\Users\lumengyu\.jdks\temurin-24" .\gradlew assembleRelease ``` 产物路径:`uniplugin_module/build/outputs/aar/dual-screen.aar` ## API 方法 ### getDisplays() 获取所有显示器列表。 ```javascript const result = dualScreen.getDisplays(); // 返回: { code: "success", displays: [{ displayId, name, isPrimary }] } ``` ### showSecondaryScreen(options) 打开副屏并显示内容。返回 Promise,结果的 code 属性表示成功或失败。 | 参数 | 类型 | 说明 | | ----- | ------ | ------------------------------------ | | url | String | 网页 URL | | html | String | 内联 HTML 内容 | | asset | String | 本地 HTML 路径(相对于 hybrid 目录) | ```javascript // 方式1:打开网址 const result = await dualScreen.showSecondaryScreen({ url: "https://www.baidu.com", }); if (result.code === "success") { console.log("副屏已打开"); } else { console.log("打开失败:", result.message); } // 方式2:内联 HTML const result = await dualScreen.showSecondaryScreen({ html: "