# Sensor Service Kit开发简介

#### 使用场景

Sensor Service Kit（传感器服务）使应用程序能够从传感器获取原始数据，并提供振感控制能力。

*   Sensor（传感器）模块是应用访问底层硬件传感器的一种设备抽象概念。开发者可根据传感器提供的相关接口订阅传感器数据，并根据传感器数据定制相应的算法开发各类应用，比如指南针、运动健康、游戏等。
    
    *   本地传感器: 设备内置的传感器，常用的包括加速度传感器、陀螺仪、温度传感器等。
    *   动态传感器: 指外置的动态传感器，模块能力可以更细化的控制每个动态传感器。为了管理这些动态接入的设备，应使用 sensor.on('sensorStatusChange', callback) 来监听设备上下线事件。在收到下线通知时，务必调用 sensor.off(...) 来释放之前监听的动态传感器资源，避免内存泄漏或异常调用。
*   Vibrator（振动）模块最大化开放马达器件能力，通过拓展马达服务实现振动与交互融合设计，打造细腻精致的一体化振动体验和差异化体验，提升用户交互效率和易用性、提升用户体验、增强品牌竞争力。
    
    *   本地马达: 设备内置的马达，常用的包括转子马达、线性马达等。
    *   动态马达: 设备外置的多个马达支持独立控制，且可以根据设备的连接、马达的状态等信息进行灵活的管理。动态马达广泛应用于外接设备，包括手柄、遥控器、外接振动器等, 为了管理这些动态接入的设备，应使用 vibrator.on('vibratorStateChange', callback) 来监听设备上下线事件。

#### 约束限制

#### Sensor

*   要使用传感器的功能，设备必须具有对应的传感器器件。
    
*   针对某些传感器，开发者需要请求相应的权限，才能获取到相应传感器的数据。
    
*   传感器数据订阅和取消订阅接口成对调用，当不再需要订阅传感器数据时，开发者需要调用取消订阅接口停止数据上报。
    
*   动态传感器断开后应用需要主动解除订阅操作。
    

#### Vibrator

*   要使用振动的功能，设备必须具有对应的器件。
*   针对马达，开发者需要请求相应的权限才能使用。
*   多个振动器的控制：当存在多个可控振动设备时，应用需要通过 getVibratorInfoSync() 查询可用的马达列表，并在调用 startVibration 或 stopVibration 时，传入 deviceId 和 vibratorId 等参数来精确控制目标马达。

#### 模拟器支持情况

Sensor（传感器）模块支持模拟器，但与真机存在差异，详情请参见“模拟器与真机的差异”。

Vibrator（振动）模块暂不支持模拟器。