1e41f4b71Sopenharmony_ci# Sensor Development
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## When to Use
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciWith the sensor module, a device can obtain sensor data. For example, the device can subscribe to data of the orientation sensor to detect its own orientation.
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ciFor details about the APIs, see [Sensor](../../reference/apis-sensor-service-kit/js-apis-sensor.md).
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci
11e41f4b71Sopenharmony_ci## Available APIs
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci| Name| Description|
14e41f4b71Sopenharmony_ci| -------- | -------- |
15e41f4b71Sopenharmony_ci| sensor.on(sensorId, callback:AsyncCallback<Response>): void | Subscribes to data changes of a type of sensor.|
16e41f4b71Sopenharmony_ci| sensor.off(sensorId, callback?:AsyncCallback<void>): void | Unsubscribes from sensor data changes.|
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci## How to Develop
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ciThe acceleration sensor is used as an example.
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci1. Import modules.
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci    ```ts
26e41f4b71Sopenharmony_ci    import { sensor } from '@kit.SensorServiceKit';
27e41f4b71Sopenharmony_ci    ```
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci2. Check whether the corresponding permission has been configured. For details, see [Declaring Permissions](../../security/AccessToken/declare-permissions.md).
30e41f4b71Sopenharmony_ci
31e41f4b71Sopenharmony_ci3. Register a listener.
32e41f4b71Sopenharmony_ci
33e41f4b71Sopenharmony_ci    The **on()** API is used to continuously listen for data changes of the sensor. The sensor reporting interval is set to **game**.
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci    ```ts    
36e41f4b71Sopenharmony_ci    sensor.on(sensor.SensorId.ACCELEROMETER, (data: sensor.AccelerometerResponse) => {
37e41f4b71Sopenharmony_ci        console.info("Succeeded in obtaining data. x: " + data.x + " y: " + data.y + " z: " + data.z);
38e41f4b71Sopenharmony_ci    }, { interval: 'game' });
39e41f4b71Sopenharmony_ci    ```
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci    ![](figures/002.png)
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci4. Cancel continuous listening.
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci    ```ts
46e41f4b71Sopenharmony_ci    sensor.off(sensor.SensorId.ACCELEROMETER);
47e41f4b71Sopenharmony_ci    ```
48