更新记录

1.0.0(2026-06-07) 下载此版本

初次提交


平台兼容性

uni-app x(4.61)

Chrome Safari Android iOS 鸿蒙 微信小程序
5.0 -

其他

多语言 暗黑模式 宽屏模式

laoqianjunzi-sensor

laoqianjunzi-sensor 是一个面向 uni-app x 的标准 UTS 传感器插件,使用统一 API 管理四端传感器监听、页面亮度、接近态和音频路由能力。

适用范围

  • app-android
  • app-harmony
  • app-ios
  • web

插件目标

  • 统一封装多种传感器监听入口,避免页面分别处理不同平台 API。
  • 在插件内提供独立演示页,便于直接验证运行行为。
  • 仅保留 Android、iOS、鸿蒙三端均支持的能力,确保跨平台行为一致。
  • 使用传感器键名(如 accelerometer)作为标识,不再使用数字编号。

目录结构

laoqianjunzi-sensor
├─package.json
├─pages/
│ └─index.uvue
├─pages_init.json
└─utssdk/
  ├─index.uts
  ├─interface.uts
  ├─common.uts
  ├─unierror.uts
  ├─app-android/
  ├─app-harmony/
  ├─app-ios/
  └─web/

能力列表

1. 传感器监听

  • 统一方法:startSensorWatchstopSensorWatchsetSensorPacketListener
  • 统一清单:getSensorCatalog
  • 统一回调结构:SensorPacket

支持的传感器如下:

键名 名称
accelerometer 加速度
magnetometer 磁场
orientation 方向
gyroscope 陀螺仪
proximity 接近
gravity 重力
linearAcceleration 线性加速度
rotationVector 旋转向量
stepCounter 计步器

2. 系统能力

  • 页面亮度:setScreenLightnessgetScreenLightness
  • 音频路由:setSpeakerphoneEnabled
  • 接近态:setProximitySensingEnabledgetProximitySensingEnabledgetProximityDetected
  • 运行权限:requestRuntimeAccess

平台说明

能力 Android Harmony iOS Web
通用传感器监听 依赖设备硬件 依赖设备硬件 依赖 CoreMotion 依赖浏览器 Generic Sensor / 事件接口
页面亮度 支持 支持 支持 仅保留插件内状态值
音频路由 支持 支持 支持 不支持系统切换
接近态独立开关 通过接近传感器实现 通过接近传感器实现 通过 UIDevice 实现 依赖浏览器 ProximitySensor
运行权限请求 支持 支持 无需显式请求时返回成功 可按需触发浏览器运动权限请求

说明:

  • 传感器是否可用由设备硬件、系统权限、浏览器实现共同决定。
  • Web 端存在较大浏览器差异,getSensorCatalog() 返回的是当前运行环境探测到的能力结果。
  • 部分 Web 浏览器会把运动或方向访问放到用户手势触发的权限流程中,建议先调用 requestRuntimeAccess()

快速开始

1. 导入插件

import {
  getSensorCatalog,
  setSensorPacketListener,
  startSensorWatch,
  stopSensorWatch
} from '@/uni_modules/laoqianjunzi-sensor'

2. 查看能力清单

const catalog = getSensorCatalog()
console.log(catalog)

3. 监听传感器

setSensorPacketListener((packet) => {
  console.log(packet)
})

const result = startSensorWatch({
  sensorType: 'accelerometer',
  readingInterval: 200
})

console.log(result)

4. 停止监听

stopSensorWatch('accelerometer')

主要类型

SensorCatalogItem

type SensorCatalogItem = {
  sensorType: string
  label: string
}

SensorCapability

type SensorCapability = {
  sensorType: string
  label: string
  isSupported: boolean
}

SensorPacket

type SensorPacket = {
  phase: 'reading' | 'accuracy' | 'error'
  sensorType: string
  label: string
  snapshot: SensorSnapshot | null
  errorCode: number
  errorMessage: string
}

RuntimeAccessResult

type RuntimeAccessResult = {
  granted: boolean
  permissions: Array<string>
  grantResults: Array<number>
  code: number
  message: string
}

演示页

插件内置演示页:

  • 路径:/uni_modules/laoqianjunzi-sensor/pages/index

演示页包含以下内容:

  • 传感器清单与可用性状态
  • 监听开始 / 停止
  • 页面亮度快速切换
  • 扬声器、接近监听开关
  • 权限申请入口
  • 最新回调数据与日志输出

权限与配置

Android

已在 utssdk/app-android/AndroidManifest.xml 中声明:

  • android.permission.ACTIVITY_RECOGNITION
  • android.permission.BODY_SENSORS
  • android.permission.MODIFY_AUDIO_SETTINGS
  • android.permission.WRITE_SETTINGS

iOS

已在 utssdk/app-ios/info.plist 中补充:

  • NSMotionUsageDescription

Harmony

  • 若业务需要请求特定传感器权限,请在宿主工程侧根据实际上架要求补充对应权限配置。

使用建议

  • 页面离开前调用 stopSensorWatch 并清空 setSensorPacketListener(null)
  • 如果需要持续展示多种数据,建议每次只开启必要传感器,避免长期并发采样。
  • 对 Web 端请优先在目标浏览器真机验证,不建议把桌面浏览器结果视为原生端能力基准。

错误码

错误码 含义
3201001 传感器类型无效
3201002 当前设备不存在或无法访问对应能力
3201003 当前平台不支持该功能
3201004 权限被拒绝
3201005 运行上下文不可用

注意事项

  • sensorType 参数使用字符串键名(如 'accelerometer'),不再使用数字编号。
  • readingInterval 单位为毫秒,建议从 100500 之间按需取值。
  • 亮度控制默认作用于当前页面或当前窗口,不建议在无用户感知的情况下频繁切换。
  • 本插件仅保留 Android、iOS、鸿蒙三端均支持的能力,确保跨平台行为一致。

隐私、权限声明

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

<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" /> <uses-permission android:name="android.permission.BODY_SENSORS" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />

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

插件不采集任何业务数据,仅读取系统传感器和页面级亮度、音频路由状态。

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

许可协议

MIT协议

暂无用户评论。