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

H
hungry_feiwei 已提交
3
InputMonitor模块提供了监听全局触摸事件的功能。
Z
zengyawen 已提交
4

H
HelloCrease 已提交
5
>  **说明:**
Z
zengyawen 已提交
6
> - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
H
HelloCrease 已提交
7
>
H
HelloCrease 已提交
8
> - 本模块接口均为系统接口。
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 32 33
| 参数       | 类型                                       | 必填   | 说明                  |
| -------- | ---------------------------------------- | ---- | ------------------- |
| type     | string                                   | 是    | 监听输入事件类型,取值“touch”。 |
| receiver | [TouchEventReceiver](#toucheventreceiver) | 是    | 触摸输入事件回调函数。         |
Z
zengyawen 已提交
34 35 36

  **示例:**

M
mayunteng_1 已提交
37
```js
M
mayunteng_1 已提交
38 39
try {
    inputMonitor.on("touch", (data)=> {
40
        console.log(`Monitor on TouchEvent success ${JSON.stringify(data)}`);
M
mayunteng_1 已提交
41 42 43
        return false;
    });
} catch (error) {
44
    console.log(`Failed to monitor on TouchEvent, 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 61 62
| 参数       | 类型                         | 必填   | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
| type     | string                     | 是    | 监听输入事件类型,取值“mouse”。 |
| receiver | Callback<MouseEvent> | 是    | 鼠标输入事件回调函数。         |
H
hungry_feiwei 已提交
63 64 65 66

  **示例:**

```js
M
mayunteng_1 已提交
67 68
try {
    inputMonitor.on("mouse", (data)=> {
69
        console.log(`Monitor on MouseEvent success ${JSON.stringify(data)}`);
M
mayunteng_1 已提交
70 71 72
        return false;
    });
} catch (error) {
73
    console.log(`Failed to monitor on MouseEvent, 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 92 93
| 参数       | 类型                                       | 必填   | 说明                  |
| -------- | ---------------------------------------- | ---- | ------------------- |
| type     | string                                   | 是    | 监听输入事件类型,取值“touch”。 |
| receiver | [TouchEventReceiver](#toucheventreceiver) | 否    | 触摸输入事件回调函数。         |
Z
zengyawen 已提交
94 95 96

  **示例:**

M
mayunteng_1 已提交
97
```js
98
// 取消监听全局触屏事件
M
mayunteng_1 已提交
99 100 101
try {
    inputMonitor.off("touch");
} catch (error) {
102
    console.log(`Failed to monitor off TouchEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
103 104 105
}
// 单独取消receiver的监听。
callback:function(data) {
106
    console.log(`call success ${JSON.stringify(data)}`);
M
mayunteng_1 已提交
107 108 109 110
},
try {
    inputMonitor.on("touch", this.callback);
} catch (error) {
111 112
    console.log(`Failed to monitor on TouchEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
},
M
mayunteng_1 已提交
113 114 115
try {
    inputMonitor.off("touch",this.callback);
} catch (error) {
116
    console.log(`Failed to monitor off TouchEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
117
}
Z
zengyawen 已提交
118 119
```

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

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

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

M
mayunteng_1 已提交
126
**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
H
hungry_feiwei 已提交
127 128 129

  **参数:**

H
HelloCrease 已提交
130 131 132 133
| 参数       | 类型                         | 必填   | 说明                  |
| -------- | -------------------------- | ---- | ------------------- |
| type     | string                     | 是    | 监听输入事件类型,取值“mouse”。 |
| receiver | Callback<MouseEvent> | 否    | 鼠标输入事件回调函数。         |
H
hungry_feiwei 已提交
134 135 136 137

**示例:**

```js
138
// 取消监听全局鼠标事件
M
mayunteng_1 已提交
139 140 141
try {
    inputMonitor.off("mouse");
} catch (error) {
142
     console.log(`Failed to monitor off MouseEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
143 144 145
}
// 单独取消receiver的监听。
callback:function(data) {
146
    console.log(`call success ${JSON.stringify(data)}`);
M
mayunteng_1 已提交
147 148 149 150
},
try {
    inputMonitor.on("mouse", this.callback);
} catch (error) {
151 152
    console.log(`Failed to monitor on MouseEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
},
M
mayunteng_1 已提交
153 154 155
try {
    inputMonitor.off("mouse", this.callback);
} catch (error) {
156
    console.log(`Failed to monitor off MouseEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
157
}
H
hungry_feiwei 已提交
158 159 160 161 162 163
```



## TouchEventReceiver

H
hungry_feiwei 已提交
164
触摸输入事件的回调函数。如果返回true,则触摸输入被监听器消耗,系统将执行关闭动作。
Z
zengyawen 已提交
165

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

M
mayunteng_1 已提交
168
**系统能力:** SystemCapability.MultimodalInput.Input.InputMonitor
Z
zengyawen 已提交
169 170

  **参数:**
H
HelloCrease 已提交
171 172 173
| 参数         | 类型                                       | 必填   | 说明                                       |
| ---------- | ---------------------------------------- | ---- | ---------------------------------------- |
| touchEvent | [TouchEvent](../arkui-js/js-components-common-events.md) | 是    | 触摸输入事件回调函数,返回true表示输触事件被监听器消费,false表示输触事件未被监听器消费。 |
Z
zengyawen 已提交
174 175

  **返回值:**
H
HelloCrease 已提交
176 177
| 类型      | 说明                                       |
| ------- | ---------------------------------------- |
178
| Boolean | 返回true表示触摸输入事件被监听器消费,false表示触摸输入事件未被监听器消费。 |
Z
zengyawen 已提交
179 180 181

  **示例:**

M
mayunteng_1 已提交
182
```js
M
mayunteng_1 已提交
183 184
try {
  inputMonitor.on("touch", (event) => {
185
    // 若返回true,表示本次操作后续所有事件不再分发到窗口,事件都由监听者消费。
M
mayunteng_1 已提交
186 187 188 189
    return false;
  });
  inputMonitor.off("touch");
} catch (error) {
190
    console.log(`Failed to monitor off TouchEvent, error: ${JSON.stringify(error, [`code`, `message`])}`);
M
mayunteng_1 已提交
191
}
Z
zengyawen 已提交
192
```