From cd1c30c7195a14be25a24109068e880a6cee12ed Mon Sep 17 00:00:00 2001 From: wangmaolin Date: Fri, 4 Jul 2025 11:01:20 +0800 Subject: [PATCH] Sensor document update Signed-off-by: wangmaolin --- .../device/sensor/sensor-guidelines.md | 4 +- .../device/sensor/sensorservice-kit-intro.md | 6 +- .../js-apis-sensor-sys.md | 30 +- .../apis-sensor-service-kit/js-apis-sensor.md | 315 +++++++++++++----- .../js-apis-vibrator.md | 25 +- 5 files changed, 276 insertions(+), 104 deletions(-) diff --git a/zh-cn/application-dev/device/sensor/sensor-guidelines.md b/zh-cn/application-dev/device/sensor/sensor-guidelines.md index eaa2a8b4b91..0b36dc4dc20 100644 --- a/zh-cn/application-dev/device/sensor/sensor-guidelines.md +++ b/zh-cn/application-dev/device/sensor/sensor-guidelines.md @@ -55,7 +55,7 @@ ```ts try { const deviceId = 1; - // 第一个参数deviceId 非必填,默认查询的为本地设备 + // 第一个参数deviceId 非必填,缺省默认查询的为本地设备。 const sensorList: sensor.Sensor[] = sensor.getSensorListByDeviceSync(deviceId); console.log(`sensorList length: ${sensorList.length}`); console.log(`sensorList: ${JSON.stringify(sensorList)}`); @@ -137,6 +137,6 @@ 取消监听。 ```ts - // 请在订阅后在使用此接口取消订阅 + // 注意:取消监听前,请确保已通过 on('sensorStatusChange', ...) 成功订阅,否则此调用无意义。 sensor.off('sensorStatusChange'); ``` \ No newline at end of file diff --git a/zh-cn/application-dev/device/sensor/sensorservice-kit-intro.md b/zh-cn/application-dev/device/sensor/sensorservice-kit-intro.md index 35f4c422c1b..2627388066c 100644 --- a/zh-cn/application-dev/device/sensor/sensorservice-kit-intro.md +++ b/zh-cn/application-dev/device/sensor/sensorservice-kit-intro.md @@ -6,11 +6,11 @@ Sensor Service Kit(传感器服务)使应用程序能够从传感器获取 - Sensor(传感器)模块是应用访问底层硬件传感器的一种设备抽象概念。开发者可根据传感器提供的相关接口订阅传感器数据,并根据传感器数据定制相应的算法开发各类应用,比如指南针、运动健康、游戏等。 - 本地传感器: 设备内置的传感器,常用的包括加速度传感器、陀螺仪、温度传感器等。 - - 动态传感器: 指外置的动态传感器,模块能力可以更细化的控制每个动态传感器。可通过on、off等接口监听到动态传感器的状态变化(连接、断开)。 + - 动态传感器: 指外置的动态传感器,模块能力可以更细化的控制每个动态传感器。为了管理这些动态接入的设备,应使用 sensor.on('sensorStatusChange', callback) 来监听设备上下线事件。在收到下线通知时,务必调用 sensor.off(...) 来释放相关资源,避免内存泄漏或异常调用。 - Vibrator(振动)模块最大化开放马达器件能力,通过拓展马达服务实现振动与交互融合设计,打造细腻精致的一体化振动体验和差异化体验,提升用户交互效率和易用性、提升用户体验、增强品牌竞争力。 - 本地马达: 设备内置的马达,常用的包括转子马达、线性马达等。 - - 动态马达: 设备外置的多个马达支持独立控制,且可以根据设备的连接、马达的状态等信息进行灵活的管理。动态马达广泛应用于外接设备,包括手柄、外接振动器等。 + - 动态马达: 设备外置的多个马达支持独立控制,且可以根据设备的连接、马达的状态等信息进行灵活的管理。动态马达广泛应用于外接设备,包括手柄、外接振动器等, 为了管理这些动态接入的设备,应使用 vibrator.on('vibratorStateChange', callback) 来监听设备上下线事件。在收到下线通知时,务必调用 vibrator.off(...) 来释放相关资源,避免内存泄漏或异常调用。 ## 约束限制 @@ -29,4 +29,4 @@ Sensor Service Kit(传感器服务)使应用程序能够从传感器获取 - 要使用振动的功能,设备必须具有对应的器件。 - 针对马达,开发者需要请求相应的权限才能使用。 -- 多个振动器的控制:存在多个设备、多个振动器时,需要应用自行选择控制振动的马达。 \ No newline at end of file +- 多个振动器的控制:当存在多个可控振动设备时,应用需要通过 getVibratorInfoSync() 查询可用的马达列表,并在调用 startVibration 或 stopVibration 时,传入 deviceId 和 vibratorId 等参数来精确控制目标马达。 \ No newline at end of file diff --git a/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-sensor-sys.md b/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-sensor-sys.md index d249c7d7fa7..880ab1acd3e 100644 --- a/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-sensor-sys.md +++ b/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-sensor-sys.md @@ -218,10 +218,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -349,10 +356,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { diff --git a/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-sensor.md b/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-sensor.md index 7397f475c06..b2261572bb4 100644 --- a/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-sensor.md +++ b/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-sensor.md @@ -2058,10 +2058,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -2189,10 +2196,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -2314,10 +2328,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -2439,10 +2460,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -2565,10 +2593,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -2691,10 +2726,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -2826,10 +2868,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -2957,10 +3006,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -3082,10 +3138,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -3213,10 +3276,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -3338,10 +3408,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -3469,10 +3546,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -3594,10 +3678,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -3719,10 +3810,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -3848,10 +3946,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -3979,10 +4084,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -4110,10 +4222,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -4235,10 +4354,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -4360,10 +4486,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -4485,10 +4618,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { @@ -4610,10 +4750,17 @@ function sensorSubscribe(): Ret { if (!sensorList.length) { return Ret.Failed; } - // 根据实际业务逻辑获取目标传感器 - const targetSensor: sensor.Sensor = sensorList[0]; - sensorInfoParam.deviceId = targetSensor.deviceId ?? -1; - sensorInfoParam.sensorIndex = targetSensor.sensorIndex ?? -1; + // 根据实际业务逻辑获取目标传感器。 + const targetSensor = sensorList + // 按需过滤deviceId为1、sensorId为2的所有传感器。此处示例仅做展示,开发者需要自行调整筛选逻辑。 + .filter((sensor: sensor.Sensor) => sensor.deviceId === 1 && sensor.sensorId === 2) + // 可能存在的多个同类型传感器,选择sensorIndex为0的传感器。 + .find((sensor: sensor.Sensor) => sensor.sensorIndex === 0); + if (!targetSensor) { + return Ret.Failed; + } + sensorInfoParam.deviceId = targetSensor.deviceId; + sensorInfoParam.sensorIndex = targetSensor.sensorIndex; // 订阅传感器事件 sensor.on(sensorType, sensorCallback, { sensorInfoParam }); } catch (error) { diff --git a/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-vibrator.md b/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-vibrator.md index 3016867b3d2..9dc983ecce3 100644 --- a/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-vibrator.md +++ b/zh-cn/application-dev/reference/apis-sensor-service-kit/js-apis-vibrator.md @@ -666,15 +666,26 @@ stopVibration(param?: VibratorInfoParam): Promise<void> import { vibrator } from '@kit.SensorServiceKit'; import { BusinessError } from '@kit.BasicServicesKit'; + // 根据实际业务逻辑获取目标马达, 例如查找本地马达,此处示例仅做展示,开发者需要自行调整筛选逻辑。 + const targetVibrator = vibratorInfoList.find((vibrator: vibrator.VibratorInfo) => { + return vibrator.isLocalVibrator; + }); + if (!targetVibrator) { + return; + } + // 调用 vibrator.startVibration 开始振动。 + // ... + + // 根据实际业务场景停止振动。 try { - vibrator.stopVibration({ deviceId: 1, vibratorId: 3 }).then(() => { - console.info('Succeed in stopping vibration'); - }, (error: BusinessError) => { - console.error(`Failed to stop vibration. Code: ${error.code}, message: ${error.message}`); - }); + vibrator.stopVibration({ deviceId: targetVibrator.deviceId, vibratorId: targetVibrator.vibratorId }).then(() => { + console.info('Succeed in stopping vibration'); + }, (error: BusinessError) => { + console.error(`Failed to stop vibration. Code: ${error.code}, message: ${error.message}`); + }); } catch (error) { - let e: BusinessError = error as BusinessError; - console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`); + let e: BusinessError = error as BusinessError; + console.error(`An unexpected error occurred. Code: ${e.code}, message: ${e.message}`); } ``` -- Gitee