android 33 在哪个类中监听 home 长按并启动数字助手的?
时间: 2024-02-12 20:08:41 浏览: 139
安卓(Android) 监听按键长按事件
在 Android 12 及以上版本(API Level 33),Home 长按事件的监听和数字助手的启动是由 `RootViewGestureListener` 类实现的。`RootViewGestureListener` 是 Android 系统中用于处理根视图(即整个屏幕)手势事件的类。
具体来说,当用户长按 Home 键时,`RootViewGestureListener` 会检测到该事件,并根据系统设置中的默认操作(如启动数字助手)执行相应的动作。
下面是 `RootViewGestureListener` 类中处理 Home 长按事件的代码片段:
```java
public class RootViewGestureListener extends GestureDetector.SimpleOnGestureListener {
// ...
@Override
public void onLongPress(MotionEvent e) {
// ...
if (mDefaultActionMode == DEFAULT_ACTION_MODE_ASSIST) {
// Launch the assist action.
final Intent assistIntent = new Intent(Intent.ACTION_ASSIST);
assistIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
mContext.startActivityAsUser(assistIntent, null, UserHandle.CURRENT);
}
// ...
}
// ...
}
```
可以看到,在 `onLongPress()` 方法中,当系统设置中的默认操作为启动数字助手时,会启动数字助手,即创建并发送一个 `ACTION_ASSIST` 的 Intent。需要注意的是,在 Android 12 及以上版本中,启动数字助手的逻辑已经从 `PhoneWindowManager` 类中移除,转移到了 `RootViewGestureListener` 类中。
阅读全文