DEV Community

HarmonyOS
HarmonyOS

Posted on

How to Obtain the List of Device Sensors

Read the original article:How to Obtain the List of Device Sensors

Problem Description

The device incorporates numerous built-in sensors. When utilizing sensor functionality, you must first retrieve the sensor list and then determine whether the device possesses the required sensors. What methods are available to obtain the sensor list for the device?

Background Knowledge

Sensor Type: System sensors represent a device abstraction concept that enables applications to access underlying hardware sensors. Developers can use the Sensor interface provided by sensors to query sensors on the device, subscribe to sensor data, and customize algorithms based on sensor data to develop various applications such as compasses, fitness and health tracking, and games.

sensorId: The sensor type ID currently supported for subscription or unsubscription.

sensor.getSensorList: Retrieve information about all sensors on the device.

Soltion

Option 1: Obtain through the system API interface sensor.getSensorList.

Example code is as follows:

import { sensor } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';

try {
  const sensorList: sensor.Sensor[] = sensor.getSensorListSync();
  const length = sensorList.length;
  const result = JSON.stringify(sensorList)
  console.info(`sensorList length: ${length}`);
  console.info(`sensorList: ${result}`);
} catch (error) {
  let e: BusinessError = error as BusinessError;
  console.error(`Failed to get sensorList. Code: ${e.code}, message: ${e.message}`);
}
Enter fullscreen mode Exit fullscreen mode

Here is the output:

sensorList length: 22
sensorList: [{
    "sensorName": "acc_s002_006",
    "vendorName": "002",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 1,
    "maxRange": 0.000009576806405675597,
    "precision": 0.23000000417232513,
    "power": 78.45320129394531,
    "minSamplePeriod": 2000000,
    "maxSamplePeriod": 200000000
}, {
    "sensorName": "mag_s001_001",
    "vendorName": "001",
    "firmwareVersion": "",
    "hardwareVersion": "1001",
    "sensorId": 6,
    "maxRange": 0.0625,
    "precision": 6.800000190734863,
    "power": 2000,
    "minSamplePeriod": 10000000,
    "maxSamplePeriod": 200000000
}, {
    "sensorName": "orientation",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 256,
    "maxRange": 0.10000000149011612,
    "precision": 13,
    "power": 360,
    "minSamplePeriod": 10000000,
    "maxSamplePeriod": 20000000
}, {
    "sensorName": "als_s006_001",
    "vendorName": "006",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 5,
    "maxRange": 1,
    "precision": 0.75,
    "power": 10000,
    "minSamplePeriod": 0,
    "maxSamplePeriod": 0
}, {
    "sensorName": "ps_s006_001",
    "vendorName": "006",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 12,
    "maxRange": 5,
    "precision": 0.75,
    "power": 5,
    "minSamplePeriod": 0,
    "maxSamplePeriod": 200000000
}, {
    "sensorName": "gyro_s002_006",
    "vendorName": "002",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 2,
    "maxRange": 0.000017453292457503267,
    "precision": 6.099999904632568,
    "power": 34.906585693359375,
    "minSamplePeriod": 2000000,
    "maxSamplePeriod": 200000000
}, {
    "sensorName": "gravity",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 257,
    "maxRange": 0.15328125655651093,
    "precision": 0.20000000298023224,
    "power": 9.806650161743164,
    "minSamplePeriod": 10000000,
    "maxSamplePeriod": 20000000
}, {
    "sensorName": "linear acceleration",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 258,
    "maxRange": 0.009576806798577309,
    "precision": 0.20000000298023224,
    "power": 78.45320129394531,
    "minSamplePeriod": 10000000,
    "maxSamplePeriod": 20000000
}, {
    "sensorName": "rotation vector",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 259,
    "maxRange": 5.960464477539063e-8,
    "precision": 6.099999904632568,
    "power": 1,
    "minSamplePeriod": 10000000,
    "maxSamplePeriod": 20000000
}, {
    "sensorName": "hall sensor",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 10,
    "maxRange": 1,
    "precision": 0.75,
    "power": 1,
    "minSamplePeriod": 0,
    "maxSamplePeriod": 0
}, {
    "sensorName": "uncalibrated magnetic field",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 261,
    "maxRange": 0.0625,
    "precision": 6.800000190734863,
    "power": 2000,
    "minSamplePeriod": 16667000,
    "maxSamplePeriod": 200000000
}, {
    "sensorName": "game rotation vector",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 262,
    "maxRange": 5.960464477539063e-8,
    "precision": 6.099999904632568,
    "power": 1,
    "minSamplePeriod": 10000000,
    "maxSamplePeriod": 20000000
}, {
    "sensorName": "uncalibrated gyroscope",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 263,
    "maxRange": 0.000017453292457503267,
    "precision": 6.099999904632568,
    "power": 34.906585693359375,
    "minSamplePeriod": 2000000,
    "maxSamplePeriod": 200000000
}, {
    "sensorName": "step detector",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 265,
    "maxRange": 1,
    "precision": 0.23000000417232513,
    "power": 2147483648,
    "minSamplePeriod": 0,
    "maxSamplePeriod": 0
}, {
    "sensorName": "step counter",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 266,
    "maxRange": 1,
    "precision": 0.23000000417232513,
    "power": 2147483648,
    "minSamplePeriod": 0,
    "maxSamplePeriod": 0
}, {
    "sensorName": "geomagnetic rotation vector",
    "vendorName": "huawei",
    "firmwareVersion": "",
    "hardwareVersion": "1",
    "sensorId": 277
    ...
}]
Enter fullscreen mode Exit fullscreen mode

Option 2: Obtain via the hdc command.

1.Access the command window via cmd, or enter the Terminal command window through the IDE.
2.Execute hdc shell.

hdc shell
Enter fullscreen mode Exit fullscreen mode

3.Run the command: hidumper -s 3601 -a -l.

hidumper -s 3601 -a -l
Enter fullscreen mode Exit fullscreen mode

Execution result:

-------------------------------[ability]-------------------------------


----------------------------------SensorService----------------------------------
Current time: 19:40:03.826
Total sensor:23, Sensor list:
sensorId:       1 | sensorType:ACCELEROMETER | sensorName:acc_s002_006 | vendorName:002 | maxRange:78.453201| fifoMaxEventCount:0 | minSamplePeriodNs:2000000 | maxSamplePeriodNs:200000000
sensorId:       6 | sensorType:MAGNETIC FIELD | sensorName:mag_s001_001 | vendorName:001 | maxRange:2000.000000| fifoMaxEventCount:0 | minSamplePeriodNs:10000000 | maxSamplePeriodNs:200000000
sensorId:     256 | sensorType:ORIENTATION | sensorName:orientation | vendorName:huawei | maxRange:360.000000| fifoMaxEventCount:0 | minSamplePeriodNs:10000000 | maxSamplePeriodNs:20000000
sensorId:       5 | sensorType:AMBIENT LIGHT | sensorName:als_s006_001 | vendorName:006 | maxRange:10000.000000| fifoMaxEventCount:0 | minSamplePeriodNs:0 | maxSamplePeriodNs:0
sensorId:      12 | sensorType:PROXIMITY | sensorName:ps_s006_001 | vendorName:006 | maxRange:5.000000| fifoMaxEventCount:0 | minSamplePeriodNs:0 | maxSamplePeriodNs:200000000
sensorId:       2 | sensorType:GYROSCOPE | sensorName:gyro_s002_006 | vendorName:002 | maxRange:34.906586| fifoMaxEventCount:0 | minSamplePeriodNs:2000000 | maxSamplePeriodNs:200000000
sensorId:     257 | sensorType:GRAVITY | sensorName:gravity | vendorName:huawei | maxRange:9.806650| fifoMaxEventCount:0 | minSamplePeriodNs:10000000 | maxSamplePeriodNs:20000000
sensorId:     258 | sensorType:LINEAR ACCELERATION | sensorName:linear acceleration | vendorName:huawei | maxRange:78.453201| fifoMaxEventCount:0 | minSamplePeriodNs:10000000 | maxSamplePeriodNs:20000000
sensorId:     259 | sensorType:ROTATION VECTOR | sensorName:rotation vector | vendorName:huawei | maxRange:1.000000| fifoMaxEventCount:0 | minSamplePeriodNs:10000000 | maxSamplePeriodNs:20000000
sensorId:      10 | sensorType:HALL | sensorName:hall sensor | vendorName:huawei | maxRange:1.000000| fifoMaxEventCount:0 | minSamplePeriodNs:0 | maxSamplePeriodNs:0
sensorId:     261 | sensorType:MAGNETIC FIELD UNCALIBRATED | sensorName:uncalibrated magnetic field | vendorName:huawei | maxRange:2000.000000| fifoMaxEventCount:0 | minSamplePeriodNs:16667000 | maxSamplePeriodNs:200000000
sensorId:     262 | sensorType:GAME ROTATION VECTOR | sensorName:game rotation vector | vendorName:huawei | maxRange:1.000000| fifoMaxEventCount:0 | minSamplePeriodNs:10000000 | maxSamplePeriodNs:20000000
sensorId:     263 | sensorType:GYROSCOPE UNCALIBRATED | sensorName:uncalibrated gyroscope | vendorName:huawei | maxRange:34.906586| fifoMaxEventCount:0 | minSamplePeriodNs:2000000 | maxSamplePeriodNs:200000000
sensorId:     265 | sensorType:PEDOMETER DETECTION | sensorName:step detector | vendorName:huawei | maxRange:2147483648.000000| fifoMaxEventCount:0 | minSamplePeriodNs:0 | maxSamplePeriodNs:0
sensorId:     266 | sensorType:PEDOMETER | sensorName:step counter | vendorName:huawei | maxRange:2147483648.000000| fifoMaxEventCount:0 | minSamplePeriodNs:0 | maxSamplePeriodNs:0
sensorId:     277 | sensorType:GEOMAGNETIC ROTATION VECTOR | sensorName:geomagnetic rotation vector | vendorName:huawei | maxRange:1.000000| fifoMaxEventCount:0 | minSamplePeriodNs:10000000 | maxSamplePeriodNs:200000000
sensorId:      15 | sensorType:SAR | sensorName:sar | vendorName:huawei | maxRange:65535.000000| fifoMaxEventCount:0 | minSamplePeriodNs:200000000 | maxSamplePeriodNs:200000000
sensorId:     282 | sensorType:RPC | sensorName:rpc_sensor | vendorName:huawei | maxRange:65535.000000| fifoMaxEventCount:0 | minSamplePeriodNs:500000000 | maxSamplePeriodNs:1000000000
sensorId:      14 | sensorType:COLOR | sensorName:color_sensor | vendorName:huawei | maxRange:65535.000000| fifoMaxEventCount:0 | minSamplePeriodNs:0 | maxSamplePeriodNs:200000000
sensorId:     281 | sensorType:ACCELEROMETER UNCALIBRATED | sensorName:uncalibrated accelerometer | vendorName:huawei | maxRange:78.453201| fifoMaxEventCount:0 | minSamplePeriodNs:5000000 | maxSamplePeriodNs:200000000
sensorId:     269 | sensorType:DROP DETECTION | sensorName:drop | vendorName:huawei | maxRange:65535.000000| fifoMaxEventCount:0 | minSamplePeriodNs:0 | maxSamplePeriodNs:0
sensorId:     268 | sensorType:HEAD POSTURE | sensorName:audio_fusion | vendorName:huawei | maxRange:1.000000| fifoMaxEventCount:5 | minSamplePeriodNs:16000000 | maxSamplePeriodNs:200000000
Enter fullscreen mode Exit fullscreen mode

Written by Fatih Turan Gundogdu

Top comments (0)