1# @ohos.stationary (设备状态感知框架)
2
3设备状态感知框架提供设备状态感知能力,包括绝对静止和相对静止。
4
5> **说明:**
6>
7> 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
8>
9> 本模块不支持x86模拟器。
10
11## 导入模块
12
13```ts
14import { stationary } from '@kit.MultimodalAwarenessKit';
15```
16
17## ActivityResponse
18
19服务响应抽象接口。
20
21**系统能力**:SystemCapability.Msdp.DeviceStatus.Stationary
22
23| 名称 | 类型 | 可读 | 可写 | 说明 |
24| -------- | -------- | -------- | -------- | -------- |
25| state | [ActivityState](#activitystate) | 是 | 否 | 设备状态变化返回值。 |
26
27## ActivityType
28
29type ActivityType = 'still' | 'relativeStill'
30
31设备状态类型。
32
33**系统能力**:SystemCapability.Msdp.DeviceStatus.Stationary
34
35| 类型 | 说明 |
36| -------- | -------- |
37| 'still' | 绝对静止。 |
38| 'relativeStill' | 相对静止。 |
39
40## ActivityEvent
41
42设备状态事件。
43
44**系统能力**:SystemCapability.Msdp.DeviceStatus.Stationary
45
46| 名称                             | 值    | 说明                                       |
47| ------------------------------ | ---- | ---------------------------------------- |
48| ENTER         | 1    | 进入。   |
49| EXIT | 2   | 退出。 |
50| ENTER_EXIT | 3   | 进入和退出。 |
51
52## ActivityState
53
54设备状态返回值。
55
56**系统能力**:SystemCapability.Msdp.DeviceStatus.Stationary
57
58| 名称                             | 值    | 说明                                       |
59| ------------------------------ | ---- | ---------------------------------------- |
60| ENTER         | 1    | 进入。   |
61| EXIT | 2   | 退出。 |
62
63## stationary.on('still' | 'relativeStill')
64
65on(activity: ActivityType, event: ActivityEvent, reportLatencyNs: number, callback: Callback<ActivityResponse>): void
66
67设备状态管理,订阅设备状态服务。
68
69**系统能力**:SystemCapability.Msdp.DeviceStatus.Stationary
70
71**参数:**
72
73| 参数名                  | 类型                                               | 必填 | 说明                          |
74| -------------------- | -------------------------------------------------- | ---- | ---------------------------- |
75| activity  | [ActivityType](#activitytype)  | 是   | 设备状态能力类型。              |
76| event  | [ActivityEvent](#activityevent)  | 是   | 事件类型。              |
77| reportLatencyNs  | number  | 是   | 报告延时。              |
78| callback             | Callback<[ActivityResponse](#activityresponse)\>  | 是   | 回调函数,接收上报状态变化事件。    |
79
80**示例:**
81
82```ts
83let reportLatencyNs = 100;
84stationary.on('still', stationary.ActivityEvent.ENTER, reportLatencyNs, (data) => {
85    console.log('data='+ JSON.stringify(data));
86})
87```
88
89## stationary.once('still' | 'relativeStill')
90
91once(activity: ActivityType, callback: Callback&lt;ActivityResponse&gt;): void
92
93设备状态管理,查询设备状态。
94
95**系统能力**:SystemCapability.Msdp.DeviceStatus.Stationary
96
97**参数:**
98
99| 参数名                  | 类型                                               | 必填 | 说明                          |
100| -------------------- | -------------------------------------------------- | ---- | ---------------------------- |
101| activity  | [ActivityType](#activitytype)  | 是   | 设备状态能力类型。              |
102| callback             | Callback<[ActivityResponse](#activityresponse)\>  | 是   | 回调函数,接收上报状态变化事件。    |
103
104**示例:**
105
106```ts
107stationary.once('still', (data) => {
108    console.log("data="+ JSON.stringify(data));
109})
110```
111
112## stationary.off('still' | 'relativeStill')
113
114off(activity: ActivityType, event: ActivityEvent, callback?: Callback&lt;ActivityResponse&gt;): void
115
116设备状态管理,取消订阅设备状态服务。
117
118**系统能力**:SystemCapability.Msdp.DeviceStatus.Stationary
119
120**参数:**
121
122| 参数名                  | 类型                                               | 必填 | 说明                          |
123| -------------------- | -------------------------------------------------- | ---- | ---------------------------- |
124| activity  | [ActivityType](#activitytype)  | 是   | 设备状态能力类型。              |
125| event  | [ActivityEvent](#activityevent)  | 是   | 事件类型。              |
126| callback | Callback:\<[ActivityResponse](#activityresponse)>  | 否   | 回调函数,接收上报状态变化事件,如果没有传递callback参数或者传递的类型是undefined,会移除该进程下订阅该类型得所有callback。  |
127
128**示例:**
129
130```ts
131stationary.off('still', stationary.ActivityEvent.ENTER);
132```
133