diff --git a/zh-cn/application-dev/device/sensor/sensor-guidelines.md b/zh-cn/application-dev/device/sensor/sensor-guidelines.md index eaa2a8b4b91c504c3b29a7404937a2a7b9523721..0b36dc4dc2053afdbf85172555567ee7e4be443c 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 35f4c422c1bf4c0996f3ca522776d4ca1247ec66..2627388066ccaf54f11a40f85bf42a904d9d1a66 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 3690f40a15a4f5063ba5ed9f52bdf62676ac89ae..9676b2444cdcd111e2c2b9d68838b0b603608e2e 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 9ce7a9d57f828cf9303fadbfcedb1c00bf35f368..c947dbc99bc608720934cef8c4d3b2292f828d69 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 @@ -2105,10 +2105,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) { @@ -2239,10 +2246,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) { @@ -2367,10 +2381,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) { @@ -2495,10 +2516,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) { @@ -2624,10 +2652,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) { @@ -2753,10 +2788,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) { @@ -2891,10 +2933,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) { @@ -3025,10 +3074,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) { @@ -3153,10 +3209,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) { @@ -3287,10 +3350,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) { @@ -3415,10 +3485,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) { @@ -3549,10 +3626,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) { @@ -3677,10 +3761,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) { @@ -3805,10 +3896,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) { @@ -3937,10 +4035,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) { @@ -4071,10 +4176,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) { @@ -4205,10 +4317,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) { @@ -4333,10 +4452,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) { @@ -4461,10 +4587,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) { @@ -4589,10 +4722,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) { @@ -4717,10 +4857,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 dae75e337a80af1d27520c6c67fe1e85edcb2c35..8a5178045c346cdbd6c4926e2811319650988e32 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 @@ -671,17 +671,28 @@ stopVibration(param?: VibratorInfoParam): Promise<void> ```ts 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 catch对可能出现的异常进行捕获 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}`); } ```