事件监听
# 包
from ascript.android.event import KeyEvent
from ascript.android.event import TouchEvent
from ascript.android.event import NotificationEvent
监听设备的按键、触摸、通知等事件,并在事件发生时执行回调函数.
KeyEvent 按键监听
监听设备的物理按键事件(音量键、返回键等).
需要无障碍服务
使用按键监听前,请确保已开启无障碍服务.
监听所有按键
- 函数
@KeyEvent.on()
def callback(event):
pass
- 回调参数 event
| 属性 | 类型 | 备注 |
|---|---|---|
| key_code | int | 按键码,如 24=音量+, 25=音量- |
| action | str | 按键动作, "down" 或 "up" |
- 示例
from ascript.android.event import KeyEvent
@KeyEvent.on()
def on_key(event):
print("按键码:", event.key_code, "动作:", event.action)
监听指定按键
通过 key_code 参数过滤,只监听指定按键.
- 函数
@KeyEvent.on(key_code=24)
def callback(event):
pass
- 常用键码
| 常量 | 值 | 备注 |
|---|---|---|
| KeyEvent.VOLUME_UP | 24 | 音量+ |
| KeyEvent.VOLUME_DOWN | 25 | 音量- |
| KeyEvent.BACK | 4 | 返回键 |
| KeyEvent.HOME | 3 | Home键 |
| KeyEvent.MENU | 82 | 菜单键 |
| KeyEvent.POWER | 26 | 电源键 |
- 示例
from ascript.android.event import KeyEvent
@KeyEvent.on(key_code=KeyEvent.VOLUME_UP)
def on_volume_up(event):
if event.action == "down":
print("音量+被按下")
@KeyEvent.on(key_code=KeyEvent.VOLUME_DOWN)
def on_volume_down(event):
if event.action == "down":
print("音量-被按下")
停止按键监听
- 函数
KeyEvent.stop()
- 示例
from ascript.android.event import KeyEvent
import time
@KeyEvent.on()
def on_key(event):
print(event.key_code)
# 监听10秒后停止
time.sleep(10)
KeyEvent.stop()
TouchEvent 触摸监听
监听屏幕上的控件交互事件(点击、长按、滚动).
说明
TouchEvent 基于无障碍服务,监听的是控件交互事件. 坐标为被交互控件的中心点位置.
监听所有触摸事件
- 函数
@TouchEvent.on()
def callback(event):
pass
- 回调参数 event
| 属性 | 类型 | 备注 |
|---|---|---|
| action | str | 交互类型: "click" / "long_click" / "scroll" |
| x | float | 被交互控件中心点 X 坐标 |
| y | float | 被交互控件中心点 Y 坐标 |
- 示例
from ascript.android.event import TouchEvent
@TouchEvent.on()
def on_touch(event):
print(f"动作:{event.action} 坐标:({event.x}, {event.y})")
监听指定类型
通过 action 参数过滤,只监听指定交互类型.
- 函数
@TouchEvent.on(action="click")
def callback(event):
pass
- 示例
from ascript.android.event import TouchEvent
@TouchEvent.on(action="click")
def on_click(event):
print(f"点击了 ({event.x}, {event.y})")
@TouchEvent.on(action="long_click")
def on_long_click(event):
print(f"长按了 ({event.x}, {event.y})")
停止触摸监听
- 函数
TouchEvent.stop()
NotificationEvent 通知监听
监听设备收到的通知消息.
需提前开启权限
AS程序: 开发者 -> 通知 -> 权限申请
监听所有通知
- 函数
@NotificationEvent.on()
def callback(event):
pass