MTK 11A 操作流程解析:从触摸到通话的内部机制
本文主要总结了关于mtk 11A平台在处理触摸消息栈方面的经验,特别是与拨号器应用程序启动流程相关的调用链路。文中提到了一系列的函数调用过程,从`mmi_dialer_instance_create()`开始,直至`mmi_pen_touch_panel_event_ind()`,涉及到了用户界面响应、信号处理以及协议处理等多个层次。 在mtk 11A平台上,当用户进行触摸操作时,事件处理的流程大致如下: 1. 首先,创建拨号器实例`mmi_dialer_instance_create()`,这是拨号应用初始化的关键步骤。 2. 接着,通过`mmi_dialer_launch_ex()`和`mmi_dialer_launch()`来启动拨号器,这两个函数可能用于处理不同的启动逻辑或参数。 3. 启动流程继续深入系统服务层,`srv_nativeappfactory_launch_ex()`和`srv_appmgr_launch_adp()`被调用,这通常涉及到应用管理器和服务管理器对应用的调度和加载。 4. 继续通过`srv_appmgr_launch_ex()`和`srv_appmgr_launch()`来实际执行应用的启动,这部分是系统级的通用应用启动机制。 5. 当用户点击应用时,事件会传递到`VappDrawerShortcutBar::onAppClicked()`,这是用户界面响应的一部分,它触发了一个信号`VfxSignal1<int>::emitEntry()`。 6. 信号进一步通过`VfxBaseSignal::emitSlots()`和`VfxAsyncSignalUtil::processPostEmit()`进行分发和处理,确保异步操作的正确执行。 7. `VfxAsyncSignalQueue::processEmit()`负责处理信号队列,确保事件按照正确的顺序和时间执行。 8. 在这一过程中,触控输入被处理,`vfx_mmi_check_update()`检查是否有新的触控事件,然后调用`vfxPenProcessPenInput()`来处理笔输入。 9. `vfxPenPrePenEventProc()`和`execute_evt_cb()`等函数用于预处理笔事件,确保事件能够正确地被系统识别。 10. `emit_evt_cb()`和`process_cb_table()`进一步处理回调函数,将事件发送给相应的处理程序。 11. 事件最终到达`mmi_frm_cb_emit_event()`,该函数是框架层处理事件的关键,它调用`excecute_pen_event()`来执行具体的笔事件处理。 12. `handle_single_touch_event()`针对单个触摸事件进行处理,`mmi_pen_poll_hdlr()`则负责对触控面板的轮询,以检测新的触摸输入。 13. `mmi_pen_touch_panel_event_ind()`是触控面板事件指示器,它通知系统触控面板上的最新事件。 14. 事件处理链路的最后,`mmi_frm_execute_current_protocol_handler()`和`ProtocolEventHandler()`执行当前协议处理,这可能是为了处理特定的应用交互或通信协议。 15. 最后,`MMI_task()`作为主任务循环,负责接收并处理所有与MMI(多媒体接口)相关的任务。 此外,文中还提到了电话呼叫的相关流程,如`srv_ucm_act_request()`用于发起呼叫请求,`mmi_ucm_dial_option()`、`mmi_ucm_call_launch()`和`cui_dialer_call_launch()`用于处理拨号选项和实际拨号操作。这些函数在拨打电话时扮演着重要角色,确保拨号请求能正确地转化为实际的通话行为。 mtk 11A平台在处理触摸事件和拨号应用启动时,涉及到多个层级的交互和处理,包括用户界面、系统服务、应用管理和触控输入的处理。这些经验总结对于理解平台的底层工作原理以及优化相关功能具有重要价值。
mmi_dialer_instance_create()
> mmi_dialer_launch_ex()
> mmi_dialer_launch()
> srv_nativeappfactory_launch_ex()
> srv_appmgr_launch_adp()
> srv_appmgr_launch_ex()
> srv_appmgr_launch()
> VappDrawerShortcutBar::onAppClicked()
> VfxSignal1<int>::emitEntry()
> VfxBaseSignal::emitSlots()
> VfxAsyncSignalUtil::processPostEmit()
> VfxAsyncSignalQueue::processEmit()
> vfx_mmi_check_update()
> vfxPenProcessPenInput()
> vfxPenPrePenEventProc()
> execute_evt_cb()
> process_cb_table()
> mmi_frm_cb_emit_event()
> excecute_pen_event()
> handle_single_touch_event()
> mmi_pen_poll_hdlr()
> mmi_pen_touch_panel_event_ind()
> mmi_frm_execute_current_protocol_handler()
> ProtocolEventHandler()
> MMI_task()
02 call呼叫栈
srv_ucm_act_request(SRV_UCM_DIAL_ACT, 0x06befc44, 0x034d87ec, 0x00632570) C
mmi_ucm_dial_option(0x06befc44, MMI_UCM_EXEC_IF_PERMIT_PASS) + 0x239 字节 C
mmi_ucm_call_launch(9, 0x06befce8) + 0x48f 字节 C
cui_dialer_call_launch(0x034d87ec, 0x06befce8) + 0xbc 字节 C
cui_dialer_do_send_key_dial_1() + 0x8c 字节 C
Cate16CategoryControlAreaPenUpHandler({...}) + 0xe9 字节 C
wgui_execute_dm_category_control_area_pen_handler(1, {...}) + 0x53 字节 C
wgui_general_pen_up_hdlr({...}) + 0x39c 字节 C
excecute_pen_event(0x06befe28, 1) + 0x288 字节 C
剩余5页未读,继续阅读
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Flex垃圾回收与内存管理:防止内存泄露
- Python编程规范与最佳实践
- EJB3入门:实战教程与核心概念详解
- Python指南v2.6简体中文版——入门教程
- ANSYS单元类型详解:从Link1到Link11
- 深度解析C语言特性与实践应用
- Gentoo Linux安装与使用全面指南
- 牛津词典txt版:信息技术领域的便捷电子书
- VC++基础教程:从入门到精通
- CTO与程序员职业规划:能力提升与路径指南
- Google开放手机联盟与Android开发教程
- 探索Android触屏界面开发:从入门到设计原则
- Ajax实战:从理论到实践
- 探索Android应用开发:从入门到精通
- LM317T稳压管详解:1.5A可调输出,过载保护
- C语言实现SOCKET文件传输简单教程