stationary-guidelines.md 3.3 KB
Newer Older
B
BeanWilliams 已提交
1 2 3 4 5
# Stationary开发指导


## 场景介绍

B
BeanWilliams 已提交
6
当应用需要获取当前设备状态时,可以调用Stationary模块,例如:需要判断当前设备处于绝对静止状态或者相对静止状态。
B
BeanWilliams 已提交
7 8 9

详细的接口介绍请参考[Stationary接口](../reference/apis/js-apis-stationary.md)

B
BeanWilliams 已提交
10
## 设备状态类型参数说明
B
BeanWilliams 已提交
11 12 13 14 15 16

| 名称 | 描述 |
| -------- | -------- |
| still | 绝对静止。 |
| relativeStill | 相对静止。 |

B
BeanWilliams 已提交
17
## 订阅设备状态事件参数说明
B
BeanWilliams 已提交
18 19 20

| 变量                             | 值    | 说明                                       |
| ------------------------------ | ---- | ---------------------------------------- |
B
BeanWilliams 已提交
21 22 23
| ENTER         | 1    | 订阅进入事件。   |
| EXIT | 2   | 订阅退出事件。 |
| ENTER_EXIT | 3   | 订阅进入和退出事件。 |
B
BeanWilliams 已提交
24

B
BeanWilliams 已提交
25
## 返回设备状态参数说明
B
BeanWilliams 已提交
26 27 28

| 变量                             | 值    | 说明                                       |
| ------------------------------ | ---- | ---------------------------------------- |
B
BeanWilliams 已提交
29 30
| ENTER         | 1    | 返回进入状态。   |
| EXIT | 2   | 返回退出状态。 |
B
BeanWilliams 已提交
31 32 33 34 35

## 接口说明

| 模块          | 接口名                                                       | 描述                                                         |
| ------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
B
BeanWilliams 已提交
36 37 38
| ohos.stationary | on(activity: ActivityType, event: ActivityEvent, reportLatencyNs: number, callback: Callback<ActivityResponse>): void | 订阅设备状态,结果通过callback返回。 |
| ohos.stationary | once(activity: ActivityType, callback: Callback<ActivityResponse>): void | 查询设备状态,结果通过callback返回。 |
| ohos.stationary | off(activity: ActivityType, event: ActivityEvent, callback?: Callback<ActivityResponse>): void | 取消订阅设备状态。                                 |
B
BeanWilliams 已提交
39 40 41

## 约束与限制

B
BeanWilliams 已提交
42
设备需要支持加速度传感器。
B
BeanWilliams 已提交
43 44 45

## 开发步骤

B
BeanWilliams 已提交
46
1. 订阅绝对静止的进入事件,1秒上报一次。
B
BeanWilliams 已提交
47

48
   ```ts
B
BeanWilliams 已提交
49
   import stationary from '@ohos.stationary';
50
   import { BusinessError } from '@ohos.base';
51
   let reportLatencyNs = 1000000000;
B
BeanWilliams 已提交
52 53 54 55
   try {
      stationary.on('still', stationary.ActivityEvent.ENTER, reportLatencyNs, (data) => {
         console.log('data='+ JSON.stringify(data));
      })
56 57 58
   } catch (error) {
      let message = (error as BusinessError).message;
      console.error('stationary on failed:' + message);
B
BeanWilliams 已提交
59 60 61
   }
   ```

B
BeanWilliams 已提交
62
2. 查询绝对静止状态的进入事件。
B
BeanWilliams 已提交
63

64
   ```ts
B
BeanWilliams 已提交
65
   import stationary from '@ohos.stationary';
66
   import { BusinessError } from '@ohos.base';
B
BeanWilliams 已提交
67 68 69 70
   try {
      stationary.once('still', (data) => {
         console.log('data='+ JSON.stringify(data));
      })
71 72 73
   } catch (error) {
      let message = (error as BusinessError).message;
      console.error('stationary once failed:' + message);
B
BeanWilliams 已提交
74 75 76
   }
   ```

B
BeanWilliams 已提交
77
3. 取消订阅绝对静止状态的进入事件。
B
BeanWilliams 已提交
78

79
   ```ts
B
BeanWilliams 已提交
80
   import stationary from '@ohos.stationary';
81
   import { BusinessError } from '@ohos.base';
B
BeanWilliams 已提交
82 83 84 85
   try {
      stationary.off('still', stationary.ActivityEvent.ENTER, (data) => {
         console.log('data='+ JSON.stringify(data));
      })
86 87 88
   } catch (error) {
      let message = (error as BusinessError).message;
      console.error('stationary off failed:' + message);
B
BeanWilliams 已提交
89 90
   }
   ```