安卓input flinger的setDisplayViewports是被谁调用的
时间: 2024-03-07 15:53:14 浏览: 24
setDisplayViewports() 方法是由 SurfaceFlinger 服务调用的。
Input Flinger 是 Android 系统中的一个关键组件,负责处理用户输入事件,并将其传递给对应的应用程序。当用户触摸屏幕时,Input Flinger 会接收到触摸事件,并通过输入通道将其传递给应用程序。在这个过程中,Input Flinger 需要了解当前屏幕上的显示内容和视窗信息,以便正确地处理输入事件。而这些信息正是通过 SurfaceFlinger 提供的接口来获取的。在获取到这些信息后,Input Flinger 会调用 setDisplayViewports() 方法,将这些信息传递给应用程序。
相关问题
安卓input flinger中keyboard如何指定上报event的display id
在 Android 系统中,Input Flinger 是负责处理输入事件的关键组件之一,它可以将输入事件转发给相应的应用程序。当键盘输入事件发生时,Input Flinger 需要将这些事件上报到正确的 Display 上。在 Input Flinger 中,可以通过以下方式来指定上报事件的 Display ID:
1. 获取当前活动窗口的 Display ID:
```java
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int displayId = display.getDisplayId();
```
2. 创建 KeyEvent 对象,并将其上报到指定的 Display 上:
```java
KeyEvent event = new KeyEvent(uptimeMillis, eventTime, action, code, repeat, metaState, deviceId, scanCode, flags, source);
InputManager.getInstance().injectInputEvent(event, InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
```
在 injectInputEvent() 方法中,可以通过指定 InputEvent 对象和 InputManager.INJECT_INPUT_EVENT_MODE_ASYNC 参数来将 KeyEvent 上报到指定的 Display 上。
需要注意的是,InputManager.INJECT_INPUT_EVENT_MODE_ASYNC 参数指定了事件注入的模式,表示事件将异步注入到系统中,这样可以避免阻塞 UI 线程。另外,如果您需要在多个 Display 上同时处理输入事件,可以在上述步骤中多次调用 injectInputEvent() 方法,并指定不同的 Display ID。
AudioPolicyManager.cpp的getOutputForAttr函数是谁调用的
根据Android 10.0版本的源代码分析,getOutputForAttr函数可以被AudioPolicyManager类中的其他函数调用,也可以被其他模块中的代码调用。在AudioPolicyManager.cpp文件中,可以发现以下函数调用了getOutputForAttr函数:
- AudioPolicyManager::getOutputForDevice()
- AudioPolicyManager::getOutputForAttr()
- AudioPolicyManager::getOutputForStrategy()
此外,还有一些其他模块中的代码会调用getOutputForAttr函数,例如AudioTrack类中的start函数和AudioFlinger类中的createTrack_l函数等。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![drawio](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)