更新记录

1.0.0(2026-10-18)

兼容蒸汽模式


平台兼容性

uni-app(5.26)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× √ × × √ × √ √ ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × × ×

uni-app x(5.26)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × √ √ × ×

其他

多语言 暗黑模式 宽屏模式 蒸汽模式
× × × √

亮度常亮 X

适合阅读、扫码、视频、导航等前台页面。统一控制屏幕亮度与常亮,附带可直接复制的演示页。

  • 调亮度:0~100%,读取当前状态,恢复修改前的亮度。
  • 防息屏:开启或关闭屏幕常亮,页面退出时可恢复原状态。
  • 直接接入:.uvue 与 .vue 示例、操作结果和错误码、系统设置入口。
项目 页面文件 支持平台
uni-app x Vapor / VDOM index.uvue Android、iOS
uni-app Vue3 index.vue Android、iOS App

使用 HBuilderX 5.26 或以上。这是 UTS API 插件,不包含原生视图组件。Web、小程序、鸿蒙不提供屏幕控制能力。

4 步运行演示

1. 导入插件

从插件市场导入项目,确认目录存在:

uni_modules/austin-screen-x/

2. 制作并选择自定义基座

在 HBuilderX 选择目标项目,制作 Android 或 iOS 自定义调试基座。打包完成后安装基座,在“运行到手机或模拟器”中选择自定义基座。

首次导入、升级插件原生代码后需要重新制作基座;只修改演示页面不需要重新制作。iOS 真机基座使用该 App 对应的 .p12 与 .mobileprovision,本插件不需要额外证书或 .p8。

3. 复制页面

按自己的项目类型选择一个文件,复制完整内容:

项目 从插件内复制 保存到项目
uni-app x uni_modules/austin-screen-x/index.uvue pages/screen/index.uvue
uni-app Vue3 uni_modules/austin-screen-x/index.vue pages/screen/index.vue

页面内部已使用 @/uni_modules/austin-screen-x,复制后无需修改 import。

4. 注册并打开页面

在项目 pages.json 的 pages 数组内添加:

{
  "path": "pages/screen/index",
  "style": { "navigationBarTitleText": "亮度与常亮", "disableScroll": true }
}

uni-app x 页面内部使用 scroll-view,保留 disableScroll: true;普通 uni-app 项目可省略此项。

从已有页面打开:

uni.navigateTo({ url: '/pages/screen/index' })

先点 25%、75% 观察亮度,再打开常亮。返回上一页后,演示页会恢复自己改动过的亮度与进入时的常亮状态。

项目权限

无需在 manifest.json 增加本插件专用权限。 不需要麦克风、录音、相机或定位权限,也不需要 Android WRITE_SETTINGS 授权弹窗。

平台 亮度与常亮的作用范围 点“打开设置”后
Android 当前 Activity 窗口,不写入系统全局亮度 系统显示设置
iOS 当前前台屏幕;常亮使用应用的自动锁屏控制 当前 App 的系统设置页

常亮用于防止前台自动息屏,不能阻止用户按电源键锁屏,也不用于后台保活。iOS 不提供通过本接口直接打开系统“显示与亮度”页的入口。

在自己的页面调用

下面代码放入 uni-app x 页面的 <script setup lang="uts">:进入页面设置 75% 亮度并开启常亮,退出时恢复原状态。

import { getScreenState, setBrightness, resetBrightness, setKeepScreenOn, ScreenState, BrightnessOptions } from '@/uni_modules/austin-screen-x'

let initial: ScreenState | null = null
let brightnessChanged = false
let keepChanged = false

onLoad(() => {
  initial = getScreenState()
  const options: BrightnessOptions = { value: 0.75 }
  const brightnessResult = setBrightness(options)
  const keepResult = setKeepScreenOn(true)
  brightnessChanged = brightnessResult.ok
  keepChanged = keepResult.ok
  console.log(brightnessResult, keepResult)
})

onUnload(() => {
  const original = initial
  if (original == null) return
  if (brightnessChanged) {
    if (original.usingCustomBrightness) {
      const options: BrightnessOptions = { value: original.brightness }
      setBrightness(options)
    } else resetBrightness()
  }
  if (keepChanged) setKeepScreenOn(original.keepScreenOn)
})

uni-app Vue3 使用相同 API,删除 ScreenState、BrightnessOptions 类型导入及相应类型标注,并从 @dcloudio/uni-app 导入 onLoad、onUnload。

每次操作可检查返回值的 ok、errCode、errMsg。openSystemSettings() 请只在用户点击设置按钮时调用。

页面退出时恢复

插件本身不会自动恢复。演示页在 onUnload / onBeforeUnmount 时恢复;切到后台触发的 onHide 不等于页面销毁。完整演示页已经处理以下规则,推荐直接复制演示页中的 enterPage() 与 leavePage():

  1. 进入页面时记录一次亮度、是否自定义亮度、常亮状态。
  2. 仅记录调用成功的改动;刷新状态、从系统设置返回不会覆盖初始记录。
  3. 页面卸载时,仅恢复本页改动过的项;原本开启常亮的页面不会被强制关闭。

需要在后台也立即停止常亮时,可在自己的 onHide 中恢复常亮,并在 onShow 中根据业务重新开启。示例在页面卸载时恢复,跳转系统设置不会重建初始记录。

API

以下接口均同步返回;请在 App 前台页面中调用。

方法 参数 返回
setBrightness(options) { value: number },0~1,例如 0.75 为 75% ScreenOperationResult
resetBrightness() 无 ScreenOperationResult
setKeepScreenOn(enabled) boolean,true 开启 ScreenOperationResult
isKeepScreenOn() 无 boolean
getScreenState() 无 ScreenState
openSystemSettings() 无 ScreenOperationResult

setBrightness() 不传参数时使用 50%;有限数值超出 0~1 会截取到范围内,value: null、NaN / Infinity 返回失败且不改变亮度。

resetBrightness() 的含义: 恢复本轮第一次 setBrightness() 前记录的亮度,并清除这次记录。Android 恢复窗口原值(原先跟随系统时恢复跟随系统);iOS 恢复当时记录的屏幕亮度。它不会关闭常亮,也不保证恢复为某个固定百分比。多个页面共同使用时,请由业务统一管理恢复时机。

操作结果 ScreenOperationResult

字段 类型 含义
ok boolean 操作是否成功
platform string android、ios 或 other
action string 本次 API 方法名
brightness number 操作后读取的亮度,0~1
brightnessPercent number 亮度百分比,0~100
keepScreenOn boolean 当前是否常亮
errCode number 错误码;成功为 0
errMsg string 失败原因
note string 本次操作提示

状态 ScreenState

字段 类型 含义
supported boolean 当前平台及页面上下文是否可用
platform string android、ios 或 other
brightness / brightnessPercent number 当前亮度 0~1 / 百分比 0~100
keepScreenOn boolean 当前是否常亮
usingCustomBrightness boolean 是否处于自定义亮度状态
brightnessScope string Android app、iOS screen、其他 unsupported
supportsBrightness boolean 当前可否控制亮度
supportsKeepScreenOn boolean 当前可否控制常亮
supportsOpenSettings boolean 当前可否打开设置
settingsTarget string Android display、iOS app、其他 unsupported
notes string 当前平台说明或不可用原因

常见问题

现象 处理方式
API 提示不支持,或升级后仍表现为旧版本 确认运行 Android / iOS App,并重新制作、安装和选择自定义基座
模拟器调节后看不出变化,数值仍可能保持原值 模拟器用于页面、调用流程与返回值检查;实际屏幕明暗和自动息屏请在真机观察
返回其他页面仍然常亮 在退出业务页面时恢复进入时的常亮状态,参考完整演示页的 leavePage()
resetBrightness() 后仍显示自定义亮度 Android 可能恢复到原本已经存在的窗口亮度覆盖值;以进入前状态为准
Android 亮度百分比与体感不一致 跟随系统时读取系统设置值,自动亮度、设备显示策略可能影响实际观感
系统设置打开了,但没直接进入亮度页 iOS 只打开 App 设置;Android 打开显示设置,具体界面由系统决定

错误码:11001 为平台不支持,34001 为当前页面或亮度/常亮操作不可用,34002 为打开设置失败,34003 为非法亮度值。以 ok 和 errMsg 判断本次操作结果。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

无需新增麦克风、录音、定位权限,无需 Android WRITE_SETTINGS。Android 控制当前 Activity 窗口,iOS 控制前台屏幕;跳转设置仅由用户主动操作触发。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件仅在本机读取与控制屏幕亮度、常亮状态,不采集或上传用户数据。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无

暂无用户评论。