js-apis-inputmonitor.md 6.3 KB
Newer Older
Z
zengyawen 已提交
1 2
# 输入监听

M
mayunteng_1 已提交
3
输入监听模块,提供了监听输入设备事件(当前支持触摸屏和鼠标)的能力。
H
HelloCrease 已提交
4
>  **说明:**
H
HelloCrease 已提交
5
>
M
mayunteng_1 已提交
6 7 8
>  - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
>
>  - 本模块接口均为系统接口。
Z
zengyawen 已提交
9 10 11 12 13


## 导入模块


M
mayunteng_1 已提交
14
```js
Z
zengyawen 已提交
15 16 17 18 19 20 21 22
import inputMonitor from '@ohos.multimodalInput.inputMonitor';
```


## inputMonitor.on

on(type: "touch", receiver: TouchEventReceiver): void

M
mayunteng_1 已提交
23
开始监听全局触屏事件。
Z
zengyawen 已提交
24

M
mayunteng_1 已提交
25
**需要权限:** ohos.permission.INPUT_MONITORING
Z
zengyawen 已提交
26

M
mayunteng_1 已提交
27
**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
Z
zengyawen 已提交
28 29

  **参数:**
H
HelloCrease 已提交
30 31
| 参数       | 类型                                       | 必填   | 说明                  |
| -------- | ---------------------------------------- | ---- | ------------------- |
M
mayunteng_1 已提交
32 33
| type     | string                                   | 是    | 输入设备事件类型,取值“touch”。 |
| receiver | [TouchEventReceiver](#toucheventreceiver) | 是    | 回调函数,异步上报触摸屏输入事件。 |
Z
zengyawen 已提交
34 35 36

  **示例:**

M
mayunteng_1 已提交
37
```js
M
mayunteng_1 已提交
38
try {
M
mayunteng_1 已提交
39 40 41 42
  inputMonitor.on("touch", (touchEvent) => {
    console.log(`Monitor on success ${JSON.stringify(touchEvent)}`);
    return false;
  });
M
mayunteng_1 已提交
43
} catch (error) {
M
mayunteng_1 已提交
44
  console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
45
}
Z
zengyawen 已提交
46 47
```

M
mayunteng_1 已提交
48

H
hungry_feiwei 已提交
49 50 51 52 53 54 55 56 57 58
on(type: "mouse", receiver: Callback<MouseEvent>): void

开始监听全局鼠标事件。

**需要权限:** ohos.permission.INPUT_MONITORING

**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor

  **参数:** 

H
HelloCrease 已提交
59 60
| 参数       | 类型                         | 必填   | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
M
mayunteng_1 已提交
61 62
| type     | string                     | 是    | 输入设备事件类型,取值“mouse”。 |
| receiver | Callback<MouseEvent> | 是    | 回调函数,异步上报鼠标输入事件。  |
H
hungry_feiwei 已提交
63 64 65 66

  **示例:**

```js
M
mayunteng_1 已提交
67
try {
M
mayunteng_1 已提交
68 69 70 71
  inputMonitor.on("mouse", (mouseEvent) => {
    console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`);
    return false;
  });
M
mayunteng_1 已提交
72
} catch (error) {
M
mayunteng_1 已提交
73
  console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
74
}
H
hungry_feiwei 已提交
75 76 77
```


Z
zengyawen 已提交
78 79 80

## inputMonitor.off

H
hungry_feiwei 已提交
81
off(type: "touch", receiver?: TouchEventReceiver): void
Z
zengyawen 已提交
82

83
停止监听全局触屏事件。
Z
zengyawen 已提交
84

M
mayunteng_1 已提交
85
**需要权限:** ohos.permission.INPUT_MONITORING
Z
zengyawen 已提交
86

M
mayunteng_1 已提交
87
**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
Z
zengyawen 已提交
88 89

  **参数:**
H
HelloCrease 已提交
90 91
| 参数       | 类型                                       | 必填   | 说明                  |
| -------- | ---------------------------------------- | ---- | ------------------- |
M
mayunteng_1 已提交
92 93
| type     | string                                   | 是    | 输入设备事件类型,取值“touch”。 |
| receiver | [TouchEventReceiver](#toucheventreceiver) | 否    | 需要取消监听的回调函数,若无此参数,则取消当前应用监听的所有回调函数。  |
Z
zengyawen 已提交
94 95 96

  **示例:**

M
mayunteng_1 已提交
97
```js
M
mayunteng_1 已提交
98
// 取消监听单个回调函数
M
mayunteng_1 已提交
99
function callback(touchEvent) {
M
mayunteng_1 已提交
100 101
  console.log(`Monitor on success ${JSON.stringify(touchEvent)}`);
  return false;
M
mayunteng_1 已提交
102
};
M
mayunteng_1 已提交
103
try {
M
mayunteng_1 已提交
104 105 106
  inputMonitor.on("touch", callback);
  inputMonitor.off("touch", callback);
  console.log(`Monitor off success`);
M
mayunteng_1 已提交
107
} catch (error) {
M
mayunteng_1 已提交
108 109 110 111 112 113
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

```js
// 取消监听所有回调函数
M
mayunteng_1 已提交
114
function callback(touchEvent) {
M
mayunteng_1 已提交
115 116
  console.log(`Monitor on success ${JSON.stringify(touchEvent)}`);
  return false;
M
mayunteng_1 已提交
117
};
M
mayunteng_1 已提交
118
try {
M
mayunteng_1 已提交
119
  inputMonitor.on("touch", callback);
M
mayunteng_1 已提交
120
  inputMonitor.off("touch");
M
mayunteng_1 已提交
121
  console.log(`Monitor off success`);
M
mayunteng_1 已提交
122
} catch (error) {
M
mayunteng_1 已提交
123
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
124
}
Z
zengyawen 已提交
125 126
```

H
hungry_feiwei 已提交
127
off(type: "mouse", receiver?: Callback<MouseEvent>): void
M
mayunteng_1 已提交
128

H
hungry_feiwei 已提交
129
停止监听全局鼠标事件。
Z
zengyawen 已提交
130

M
mayunteng_1 已提交
131
**需要权限:** ohos.permission.INPUT_MONITORING
H
hungry_feiwei 已提交
132

M
mayunteng_1 已提交
133
**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
H
hungry_feiwei 已提交
134 135 136

  **参数:**

H
HelloCrease 已提交
137 138
| 参数       | 类型                         | 必填   | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
M
mayunteng_1 已提交
139 140
| type     | string                     | 是    | 输入设备事件类型,取值“mouse”。 |
| receiver | Callback<MouseEvent> | 否    | 需要取消监听的回调函数,若无此参数,则取消当前应用监听的所有回调函数。 |
H
hungry_feiwei 已提交
141 142 143 144

**示例:**

```js
M
mayunteng_1 已提交
145
// 取消监听单个回调函数
M
mayunteng_1 已提交
146
function callback(mouseEvent) {
M
mayunteng_1 已提交
147
  console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`);
M
mayunteng_1 已提交
148 149
  return false;
};
M
mayunteng_1 已提交
150
try {
M
mayunteng_1 已提交
151 152 153
  inputMonitor.on("mouse", callback);
  inputMonitor.off("mouse", callback);
  console.log(`Monitor off success`);
M
mayunteng_1 已提交
154
} catch (error) {
M
mayunteng_1 已提交
155 156 157 158 159 160
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
}
```

```js
// 取消监听所有回调函数
M
mayunteng_1 已提交
161
function callback(mouseEvent) {
M
mayunteng_1 已提交
162
  console.log(`Monitor on success ${JSON.stringify(mouseEvent)}`);
M
mayunteng_1 已提交
163 164
  return false;
};
M
mayunteng_1 已提交
165
try {
M
mayunteng_1 已提交
166
  inputMonitor.on("mouse", callback);
M
mayunteng_1 已提交
167
  inputMonitor.off("mouse");
M
mayunteng_1 已提交
168
  console.log(`Monitor off success`);
M
mayunteng_1 已提交
169
} catch (error) {
M
mayunteng_1 已提交
170
  console.log(`Monitor execute failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
171
}
H
hungry_feiwei 已提交
172 173 174 175
```

## TouchEventReceiver

M
mayunteng_1 已提交
176
触摸输入事件的回调函数。
Z
zengyawen 已提交
177

H
HelloCrease 已提交
178
**需要权限:** ohos.permission.INPUT_MONITORING
H
hungry_feiwei 已提交
179

M
mayunteng_1 已提交
180
**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
Z
zengyawen 已提交
181 182

  **参数:**
H
HelloCrease 已提交
183 184
| 参数         | 类型                                       | 必填   | 说明                                       |
| ---------- | ---------------------------------------- | ---- | ---------------------------------------- |
M
mayunteng_1 已提交
185
| touchEvent | [TouchEvent](../arkui-js/js-components-common-events.md) | 是    | 触摸输入事件。 |
Z
zengyawen 已提交
186 187

  **返回值:**
H
HelloCrease 已提交
188 189
| 类型      | 说明                                       |
| ------- | ---------------------------------------- |
M
mayunteng_1 已提交
190
| Boolean | 若返回true,本次触摸后续产生的事件不再分发到窗口;若返回false,本次触摸后续产生的事件还会分发到窗口。 |
Z
zengyawen 已提交
191 192 193

  **示例:**

M
mayunteng_1 已提交
194
```js
M
mayunteng_1 已提交
195
try {
M
mayunteng_1 已提交
196
  inputMonitor.on("touch", touchEvent => {
M
mayunteng_1 已提交
197
    if (touchEvent.touches.length == 3) { // 当前有三个手指按下
M
mayunteng_1 已提交
198 199 200 201
      return true;
    } else {
      return false;
    }
M
mayunteng_1 已提交
202 203
  });
} catch (error) {
M
mayunteng_1 已提交
204
    console.log(`Monitor on failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
205
}
Z
zengyawen 已提交
206
```