鸿蒙NEXT开发【合理使用传感器资源+开发指导】后台任务功耗优化

应用退后台禁止使用传感器资源。

约束

NA

示例

import { UIAbility } from '@kit.AbilityKit';
import { sensor } from '@kit.SensorServiceKit';

export default class EntryAbility extends UIAbility {
  // ...
  onForeground(): void {
    //在前台时按业务所需监听所需类型的sensor
    sensor.on(sensor.SensorId.ACCELEROMETER, (data: sensor.AccelerometerResponse) => {
      console.info("Succeededinobtainingdata.x:" + data.x + "y:" + data.y + "z:" + data.z);
    }, {
      interval: 100000000
    });
  }

  onBackground(): void {
    //退后台取消监听
    sensor.off(sensor.SensorId.ACCELEROMETER);
  }
}

传感器开发

场景介绍

当设备需要获取传感器数据时,可以使用sensor模块,例如:通过订阅方向传感器数据感知用户设备当前的朝向,通过订阅计步传感器数据统计用户的步数等。

接口说明

名称描述
sensor.on(sensorId, callback:AsyncCallback): void持续监听传感器数据变化。
sensor.once(sensorId, callback:AsyncCallback): void获取一次传感器数据变化。
sensor.off(sensorId, callback?:AsyncCallback): void注销传感器数据的监听。
sensor.getSensorList(callback: AsyncCallback<Array>): void获取设备上的所有传感器信息。

开发步骤

开发步骤以加速度传感器ACCELEROMETER为例。

  1. 导入模块。
import { sensor } from '@kit.SensorServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
  1. 查询设备支持的所有传感器的参数。
sensor.getSensorList((error: BusinessError, data: Array<sensor.Sensor>) => {
    if (error) {
        console.info('getSensorList failed');
    } else {
        console.info('getSensorList success');
        for (let i = 0; i < data.length; i++) {
            console.info(JSON.stringify(data[i]));
        }
    }
});

1

该传感器支持的最小采样周期为5000000纳秒,最大采样周期是200000000纳秒。不同传感器支持的采样周期范围也不同,interval应该设置在传感器支持范围内,大于最大值时以最大值上报数据,小于最小值时以最小值上报数据。设置数值越小数据上报越频繁,其功耗越大。

  1. 检查是否已经配置相应权限。

  2. 注册监听。可以通过on()和once()两种接口监听传感器的调用结果。

通过on()接口,实现对传感器的持续监听,传感器上报周期interval设置为100000000纳秒。

sensor.on(sensor.SensorId.ACCELEROMETER, (data: sensor.AccelerometerResponse) => {
     console.info("Succeeded in obtaining data. x: " + data.x + " y: " + data.y + " z: " + data.z);
}, { interval: 100000000 });

2

通过once()接口,实现对传感器的一次监听。

sensor.once(sensor.SensorId.ACCELEROMETER, (data: sensor.AccelerometerResponse) => {
    console.info("Succeeded in obtaining data. x: " + data.x + " y: " + data.y + " z: " + data.z);
});

3

  1. 取消持续监听。
sensor.off(sensor.SensorId.ACCELEROMETER);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值