事件处理方法、可读存储介质和电子设备转让专利

申请号 : CN202311134459.6

文献号 : CN116860420B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王洪烛

申请人 : 荣耀终端有限公司

摘要 :

本申请涉及终端技术领域,公开了一种事件处理方法、可读存储介质和电子设备。电子设备在辅助服务功能开启的情况下,可以建立一个独立于系统服务进程的主线程的第一线程来运行输入事件过滤模块,其中,第一线程的优先级高于系统服务进程的主线程的优先级。通过该方法,由于第一线程的优先级高于系统服务进程中的主线程,即便系统服务进程中运行有其他的高优先级任务,第一线程中的输入事件过滤模块也可以优先于系统服务进程运行,避免系统服务进程中的高优先级任务对过滤任务的影响,有利于避免电子设备响应输入事件延迟过高的情况。

权利要求 :

1.一种事件处理方法,应用于电子设备,其特征在于,包括:检测到所述电子设备的辅助服务功能开启,所述电子设备的辅助服务建立第一线程,其中,所述第一线程独立于所述电子设备的系统服务的主线程,并且所述第一线程的处理优先级高于所述系统服务的主线程的优先级;

所述辅助服务建立输入事件过滤模块;

检测到第一输入事件,所述第一线程运行所述输入事件过滤模块,对所述第一输入事件进行过滤处理。

2.根据权利要求1所述的方法,其特征在于,所述第一线程运行所述输入事件过滤模块,对所述第一输入事件进行过滤处理,包括:对应于所述第一输入事件为按下事件,将所述第一线程的处理优先级由第一优先级提高为第二优先级。

3.根据权利要求2所述的方法,其特征在于,所述方法还包括:检测到第二输入事件,所述第一线程的处理优先级由所述第二优先级恢复为所述第一优先级,其中,所述第二输入事件是抬起事件。

4.根据权利要求1至3中任一项所述的方法,其特征在于,所述第一线程运行所述输入事件过滤模块,对所述第一输入事件进行过滤处理,还包括:提高所述第一输入事件对应的第一输入事件消息的优先级。

5.根据权利要求4所述的方法,其特征在于,所述提高所述第一输入事件对应的第一输入事件消息的优先级,包括:在所述电子设备的操作系统的消息队列中设置同步屏障,并将所述第一输入事件消息设置为异步消息。

6.根据权利要求5所述的方法,其特征在于,所述第一线程运行所述输入事件过滤模块,对所述第一输入事件进行过滤处理,还包括:在对所述第一输入事件消息处理完成后,移除所述电子设备的操作系统的消息队列中的同步屏障。

7.根据权利要求1所述的方法,其特征在于,所述方法还包括:检测到所述辅助服务功能关闭,退出所述第一线程。

8.一种可读存储介质,其特征在于,所述可读存储介质中存储有指令,所述指令被电子设备执行时使得所述电子设备实现权利要求1至7中任一项所述的事件处理方法。

9.一种电子设备,其特征在于,包括:

存储器,用于存储指令;

处理器,用于执行所述指令使得所述电子设备实现权利要求1至7中任一项所述的事件处理方法。

说明书 :

事件处理方法、可读存储介质和电子设备

技术领域

[0001] 本申请涉及终端技术领域,特别涉及一种事件处理方法、可读存储介质和电子设备。

背景技术

[0002] 辅助服务功能是电子设备的操作系统提供的一种服务,通过辅助服务功能,开发人员可以创建自定义的无障碍功能,以帮助视力、听力或身体有障碍的用户更好地使用设备和应用程序。在辅助服务功能开启的情况下,电子设备中的应用程序可以采用不同的响应方式或不响应部分输入事件。因此,在辅助服务功能开启的情况下,电子设备在检测到输入事件后,可以通过在系统服务进程的主线程中运行输入事件过滤模块(例如inputfilter)对输入事件进行过滤,以滤除应用程序无需响应的输入事件,并将过滤后将的输入事件分发给对应的应用程序。
[0003] 也就是说,相较于未开启辅助服务功能时,在辅助服务开启后,电子设备对输入事件的处理在读取输入事件和分发输入事件之间增加了过滤输入事件的过程。例如,参考图1A,在辅助服务未开启时,电子设备的操作系统中的输入事件读取模块(例如inputreader)在t01时刻读取输入事件后,直接将输入事件传递给电子设备操作系统中的输入事件分发模块(例如inputdispatcher)进行输入事件分发。而参考图1B,而在辅助服务开启的情况下,输入事件读取模块在 t02时刻前读取完输入事件后,需要先由系统服务进程的主线程中运行的输入事件过滤模块在t02时刻至t03时刻期间对输入事件进行过滤,再由输入事件分发模块在t03时刻后将过滤后的输入事件分发给对应的应用程序。
[0004] 由于上述输入事件过滤模块的优先级过低,而系统服务进程的主线程需要处理的任务通常较多。在系统服务进程的主线程中有其他优先级更高的任务的情况下,系统服务进程的主线程会先执行该优先级更高的任务再运行输入事件过滤模块,从而使得对输入事件的过滤滞后,导致应用程序接收和响应输入事件出现延迟和卡顿。

发明内容

[0005] 有鉴于此,本申请提供一种事件处理方法、可读存储介质和电子设备。
[0006] 第一方面,本申请提供一种事件处理方法,应用于电子设备,该方法包括:
[0007] 检测到电子设备的辅助服务功能开启,建立第一线程,其中,第一线程独立于电子设备的系统服务的主线程,并且第一线程的处理优先级高于系统服务的主线程的优先级;检测到第一输入事件,基于第一线程对第一输入事件进行过滤处理。
[0008] 在该方法中,由于第一线程(例如下文中的HandlerThread线程)独立于电子设备的系统服务进程的主线程并且优先级高于系统服务进程的主线程,即使系统服务进程的主线程运行有其他的高优先级任务,也不会影响第一线程的运行。如此,第一线程可以及时对第一输入事件进行过滤,降低电子设备响应第一输入事件的延迟。
[0009] 在上述第一方面的一种可能实现中,上述第一线程是系统服务对应的第一进程中的线程,或者第二进程中的线程。
[0010] 在上述第一方面的一种可能实现中,上述电子设备的操作系统包括输入事件过滤模块;并且,基于第一线程对第一输入事件进行过滤处理,包括:通过第一线程运行输入事件过滤模块,对第一输入事件进行过滤处理。
[0011] 可选地,在一些实现方式中,输入事件过滤模块可以是inputfilter。
[0012] 在上述第一方面的一种可能实现中,上述基于第一线程对第一输入事件进行过滤处理,包括:对应于第一输入事件为按下事件,将第一线程的处理优先级由第一优先级提高为第二优先级。
[0013] 也就是说,电子设备可以在第一输入事件是按下事件时,进一步提高第一线程的优先级,以便于进一步降低电子设备响应第一输入事件的延迟。
[0014] 在上述第一方面的一种可能实现中,上述方法还包括:检测到第二输入事件,将第一线程的处理优先级由第二优先级恢复为第一优先级,其中,第二输入事件是抬起事件。
[0015] 也就是说,电子设备可以在检测到抬起事件后,将第一线程的处理优先级由第二优先级恢复为第一优先级。如此,可以避免第一线程长时间以较高优先级运行影响其他线程或进程。
[0016] 在上述第一方面的一种可能实现中,上述基于第一线程对第一输入事件进行过滤处理,还包括:提高第一输入事件对应的第一输入事件消息的优先级。
[0017] 也就是说,电子设备还可以进一步提高第一输入事件对应的第一输入事件消息(例如下文中的MSG_INPUT_EVENT消息)的优先级,以进一步降低电子设备响应第一输入事件的延迟。
[0018] 在上述第一方面的一种可能实现中,上述提高第一输入事件对应的第一输入事件消息的优先级,包括:在电子设备的操作系统的消息队列中设置同步屏障,并将第一输入事件消息设置为异步消息。
[0019] 在上述第一方面的一种可能实现中,上述基于第一线程对第一输入事件进行过滤处理,还包括:在对第一输入事件消息处理完成后,移除电子设备的操作系统的消息队列中的同步屏障。
[0020] 也就是说,在对第一输入事件消息处理完成后,电子设备可以移除电子设备的操作系统的消息队列中的同步屏障,以避免影响其他消息的传递。
[0021] 在上述第一方面的一种可能实现中,上述方法还包括:检测到辅助服务功能关闭,退出第一线程。
[0022] 第二方面,本申请提供一种可读存储介质,该可读存储介质中存储有指令,该指令被电子设备执行时使得电子设备实现上述第一方面及上述第一方面的任意一种可能实现提供的事件处理方法。
[0023] 第三方面,本申请提供一种电子设备,该电子设备包括:存储器,用于存储指令;处理器,用于执行指令使得电子设备实现上述第一方面及上述第一方面的任意一种可能实现提供的事件处理方法。
[0024] 第四方面,本申请提供一种程序产品,该程序产品在电子设备上运行时,使电子设备实现上述第一方面及上述第一方面的任意一种可能实现提供的事件处理方法。
[0025] 应理解,上述第二方面至第四方面的有益效果可以参考前述第一方面的有益效果,在此不做赘述。

附图说明

[0026] 图1A根据本申请的一些实施例,示出了一种辅助服务功能关闭的情况下,电子设备读取和分发输入事件的时序示意图;
[0027] 图1B根据本申请的一些实施例,示出了一种辅助服务功能开启的情况下,电子设备读取和分发输入事件的时序示意图;
[0028] 图2A根据本申请的一些实施例,示出了一种辅助服务功能开启的情况下,电子设备延迟响应输入事件的时序示意图;
[0029] 图2B根据本申请的一些实施例,示出了另一种辅助服务功能开启的情况下,电子设备延迟响应输入事件的时序示意图;
[0030] 图3根据本申请的一些实施例,示出了一种电子设备通过独立于系统服务主线程的HandlerThread线程运行输入事件过滤模块的时序示意图;
[0031] 图4根据本申请的一些实施例,示出了一种事件处理方法的流程示意图;
[0032] 图5根据本申请的一些实施例,示出了一种电子设备显示的辅助服务功能相关的界面示意图;
[0033] 图6根据本申请的一些实施例,示出了一种电子设备10的软件架构示意图;
[0034] 图7根据本申请的一些实施例,示出了一种事件处理方法的过程示意图;
[0035] 图8根据本申请的一些实施例,示出了另一种事件处理方法的过程示意图;
[0036] 图9根据本申请的一些实施例,示出了一种输入事件过滤模块管理建立和退出HandlerThread线程的流程示意图;
[0037] 图10根据本申请的一些实施例,示出了一种调整HandlerThread线程的优先级的流程示意图;
[0038] 图11根据本申请的一些实施例,示出了一种调整输入事件消息的优先级的过程的流程示意图;
[0039] 图12根据本申请的一些实施例,示出了一种电子设备建立和退出HandlerThread线程的时序示意图;
[0040] 图13根据本申请的一些实施例,示出了一种调整HandlerThread线程和输入事件消息的优先级的时序示意图;
[0041] 图14根据本申请的一些实施例,示出了一种电子设备10的结构示意图。

具体实施方式

[0042] 本申请的说明性实施例包括但不限于事件处理方法、可读存储介质和电子设备。
[0043] 下面结合附图介绍本申请的技术方案。如前所述,由于上述输入事件过滤模块的优先级过低,而系统服务进程的主线程需要处理的任务通常较多。在系统服务进程的主线程中有其他优先级更高的任务的情况下,系统服务进程的主线程会先执行该优先级更高的任务再运行输入事件过滤模块,从而使得对输入事件的过滤滞后,导致应用程序接收和响应输入事件出现延迟和卡顿。
[0044] 例如,图2A示出了一种电子设备读取、过滤和分发输入事件的时序示意图。
[0045] 如图2A所示,电子设备读取、过滤和分发输入事件的过程包括以下阶段:
[0046] t11时刻前,由输入事件读取模块读取完输入事件。
[0047] t11时刻至t13时刻,在存在多个优先级高于输入事件过滤模块的任务(以下称为高优先级任务)的情况下,system_server进程(作为系统服务进程)的主线程在运行完高优先级任务后,再运行输入事件过滤模块对输入事件进行过滤。
[0048] 其中,t11时刻至t12时刻system_server进程的主线程运行多个高优先级任务,所用时间为T1,由图2A可得T1=250ms;t12时刻至t13时刻,输入事件过滤模块对输入事件进行过滤,并将过滤后的事件传递给输入事件分发模块。
[0049] t13时刻后,输入事件分发模块对过滤后的输入事件进行分发。
[0050] 如此,输入事件从读取到分发有250ms的延迟,导致电子设备响应输入事件卡顿。
[0051] 又例如,图2B示出了另一种电子设备读取、过滤和分发输入事件的时序示意图。
[0052] 如图2B所示,电子设备读取、过滤和分发输入事件的过程包括以下阶段:
[0053] t14时刻前,由输入事件读取模块读取完输入事件。
[0054] t14时刻至t16时刻,在存在某一高优先级任务的情况下system_server进程的主线程在运行完高优先级任务后,再运行输入事件过滤模块对输入事件进行过滤。
[0055] 其中,t14时刻至t15时刻system_server进程的主线程运行某一高优先级任务,所用时间为T2,由图2B可得T2=300ms;t15时刻至t16时刻,输入事件过滤模块对输入事件进行过滤,并将过滤后的事件传递给输入事件分发模块。
[0056] t16时刻后,输入事件分发模块对过滤后的输入事件进行分发。
[0057] 如此,输入事件从读取到分发有250ms的延迟,导致电子设备响应输入事件卡顿。
[0058] 为解决在辅助服务功能开启的情况下由于输入事件过滤模块的优先级过低导致输入事件响应延迟的问题,本申请实施例提供了一种事件处理方法。在辅助服务功能开启的情况下,电子设备可以建立一个独立于系统服务进程的主线程的第一线程来运行输入事件过滤模块,其中,第一线程的优先级高于系统服务进程的主线程的优先级。
[0059] 通过该方法,由于第一线程的优先级高于系统服务进程中的主线程,即便系统服务进程中运行有其他的高优先级任务,第一线程中的输入事件过滤模块也可以优先于系统服务进程运行,避免系统服务进程中的高优先级任务对过滤任务的影响,有利于避免电子设备响应输入事件延迟过高的情况。
[0060] 应理解,在一些实施例中,第一线程可以运行于系统服务进程中,也可以是系统服务进程外的其他进程中的线程。为便于描述,以下以系统服务进程为system_server进程、第一线程为运行于system_server进程中的线程为例,介绍本申请的技术方案。
[0061] 例如,图3示出了一种电子设备读取、过滤和分发输入事件的时序示意图。
[0062] 如图3所示,电子设备读取、过滤和分发输入事件的过程包括以下阶段:
[0063] t20时刻前,由输入事件读取模块读取输入事件。
[0064] t20时刻至t21时刻,HandlerThread线程中的输入事件过滤模块对输入事件进行过滤,并将过滤后的事件传递给输入事件分发模块。
[0065] t21时刻后,输入事件分发模块对过滤后的输入事件进行分发。
[0066] 在上述电子设备读取、过滤和分发输入事件的全过程中,system_server进程的主线程可以并行运行其他的高优先级任务,避免了由于system_server进程的主线程中的高优先级任务对过滤任务的影响。
[0067] 可选地,在一些实施例中,电子设备还可以调整消息队列中用于传递输入事件的输入事件消息(例如MSG_INPUT_EVENT消息)的优先级,使电子设备的操作系统可以优先处理输入事件消息。如此,可以降低电子设备响应输入事件的延迟。例如,电子设备可以通过在消息队列中将MSG_INPUT_EVENT消息设为异步(asynchronous)消息并开启同步屏障(sync barrier)的方式来提高MSG_INPUT_EVENT的优先级。
[0068] 应理解,在开启同步屏障的情况下,电子设备的操作系统会优先处理异步消息,因而在将MSG_INPUT_EVENT消息设置为异步消息后,会提高电子设备分发和处理MSG_INPUT_EVENT消息的优先级,缩短MSG_INPUT_EVENT消息传递的时长。
[0069] 又例如,电子设备可以通过为消息队列中的每个消息任务设置单独的优先级,并将MSG_INPUT_EVENT消息设为最高优先级的方式,提高电子设备处理MSG_INPUT_EVENT消息的效率。
[0070] 在一些实施例中,电子设备还可以根据MSG_INPUT_EVENT消息的类型,进一步提高或恢复HandlerThread线程的优先级,以进一步缩短电子设备处理输入事件的时间。
[0071] 例如,电子设备可以通过在MSG_INPUT_EVENT消息所对应的输入事件为按下事件时,提升HandlerThread线程的优先级至高于创建HandlerThread线程时的原优先级;在输入事件为抬起事件时恢复HandlerThread线程优先级为原优先级。
[0072] 示例性地,电子设备可以在MSG_INPUT_EVENT消息所对应的输入事件为按下事件时,将HandlerThread线程调度策略调整为先入先出调度策略(Schedule_first in‑first out scheduling,SCHED_FIFO)。
[0073] 应理解,优先级为SCHED_FIFO的任务一旦占用CPU则一直运行,直到有更高优先级任务到达或自己放弃。
[0074] 下面结合图3所示的情形,介绍本申请的技术方案。
[0075] 图4根据本申请的一些实施例,示出了一种事件处理方法的流程示意图。该流程执行的主体为电子设备,如图4所示,该流程包括如下步骤:
[0076] S401,在辅助服务功能开启的情况下,建立用于运行输入事件过滤模块的HandlerThread线程。
[0077] 例如,参考图5,电子设备可以在用户在设置应用中选择辅助功能选项后,显示图5所示的辅助功能界面U0,辅助功能界面U0中包括电子设备中与辅助功能相关的选择,例如无障碍选项U01。当用户在辅助功能界面U0中选择无障碍选项U01时,电子设备可以显示无障碍界面U02,无障碍界面U02中包括与无障碍相关的选项,例如屏幕朗读选项U03、触控调节选项U04等。
[0078] 当用户选择无障碍界面U02中的任意至少一个选项时(例如,开启屏幕朗读选项U03和/或触控调节选项U04),电子设备可以确定辅助服务功能开启,建立独立于system_sever进程主线程的HandlerThread线程以运行输入事件过滤模块。
[0079] 应理解,HandlerThread线程的优先级可以是高于system_server进程中主线程优先级的第一优先级。
[0080] S402,检测到按下事件,提高HandlerThread线程优先级和/或提高输入事件消息的优先级。
[0081] 示例性地,电子设备在检测到按下事件时,可以提高HandlerThread线程优先级和/或提高输入事件消息的优先级。
[0082] 例如,对于图3所示的情形,电子设备在输入事件读取模块在t20时刻前检测到MSG_INPUT_EVENT消息所对应的输入事件为按下事件时,可以将HandlerThread线程的优先级提高到高于第一优先级的第二优先级,和/或提高输入事件消息的优先级。
[0083] 在一些实施例中,电子设备可以通过电子设备的操作系统或处理器定义的用于调整线程优先级的函数或指令,来提高HandlerThread线程的优先级。
[0084] 在一些实施例中,电子设备可以通过将MSG_INPUT_EVENT消息设为异步消息并开启同步屏障的方式,或者为消息队列中的每个消息任务设置单独的优先级并将MSG_INPUT_EVENT消息设为最高优先级的方式,来提高输入事件消息的优先级。
[0085] 应理解,在一些实施例中,可以由输入事件读取模块或者输入事件过滤模块或者辅助服务在检测到按下事件时提高HandlerThread线程优先级和/或提高输入事件消息的优先级。在另一些实施例中,也可以由其他线程、进程或服务在检测到按下事件时提高HandlerThread线程优先级和/或提高输入事件消息的优先级,在此不做限定。
[0086] 应理解,在另一些实施例中,电子设备也可以通过其他方式来提高HandlerThread线程优先级以及提高输入事件消息的优先级,在此不做限定。
[0087] S403,在HandlerThread线程中利用输入事件过滤模块对输入事件消息进行过滤。
[0088] 示例性地,电子设备在输入事件读取模块将输入事件对应的MSG_INPUT_EVENT消息传递给HandlerThread线程中的输入事件过滤模块后,利用输入事件过滤模块对输入事件消息进行过滤。
[0089] 例如,对于图3所示的情形,电子设备在t20时刻至t21时刻,利用HandlerThread线程中的输入事件过滤模块对输入事件消息进行过滤,例如确定是否需要应用程序处理输入事件。若输入事件消息中有满足过滤条件的事件,则传递给输入事件分发模块,若无,则不传递给输入事件分发模块。
[0090] S404,利用输入事件分发模块将输入事件过滤模块过滤后的事件分发至对应的应用程序。
[0091] 示例性地,电子设备在输入事件分发模块接收到输入事件过滤模块传递的过滤后的事件后,可以利用输入事件分发模块将输入事件过滤模块过滤后的事件分发至对应的应用程序。
[0092] 例如,参考图3,t21时刻后,输入事件分发模块对过滤完成的事件进行分发。
[0093] S405,检测到抬起事件,恢复HandlerThread线程优先级和/或输入事件的优先级。
[0094] 电子设备在输入事件读取模块读取到抬起事件时,可以恢复HandlerThread线程优先级和/或输入事件消息。
[0095] 例如,对于图3所示的情形,电子设备在输入事件读取模块在t20时刻前检测到MSG_INPUT_EVENT消息所对应的输入事件为抬起事件时,可以将HandlerThread线程的优先级恢复至第一优先级,和/或恢复输入事件消息的优先级。
[0096] 在一些实施例中,电子设备可以通过电子设备的操作系统或处理器预定义的函数来恢复HandlerThread线程的优先级。
[0097] 在一些实施例中,电子设备可以通过移除消息队列中的同步屏障,或者取消MSG_INPUT_EVENT消息的高优先级来恢复输入事件消息的优先级。
[0098] 应理解,在一些实施例中,可以由输入事件读取模块或者输入事件过滤模块或者辅助服务在检测到抬起事件时,恢复HandlerThread线程优先级和/或取消输入事件的高优先级。在另一些实施例中,也可以由其他线程、进程或服务在检测到抬起事件时,恢复HandlerThread线程优先级和/或取消输入事件的高优先级,在此不做限定。
[0099] S406,检测到辅助服务功能关闭,退出HandlerThread线程。
[0100] 例如,对于图5所示的界面,当用户关闭无障碍界面U02中已开启的所有选项时,电子设备可以确定辅助服务功能关闭,退出HandlerThread线程。
[0101] 通过本申请实施例提供的事件处理方法,可以避免在辅助服务功能开启的情况下,电子设备输入响应延迟过高的问题。
[0102] 下面结合电子设备的软件架构,介绍本申请的技术方案。
[0103] 图6根据本申请的一些实施例,示出了一种电子设备的软件架构示意图。
[0104] 如图6所示,该软件架构包括应用程序层、应用程序框架层、系统库、内核层和硬件层。
[0105] 应用程序包可以包括电话、信息、日历、图库等应用程序。
[0106] 应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
[0107] 如图6所示,应用程序框架层可以包括窗口管理器(window manager,WM),内容提供器(contentprovider,CP),电话管理器(telephony manager,TM),资源管理器(resourcemanager,RM),视图系统(view system,VS),输入管理服务(inputmanager service,IMS),系统服务(system_server),辅助服务等。
[0108] 窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
[0109] 内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。该数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
[0110] 电话管理器用于提供电子设备的通信功能。例如通话状态的管理(包括接通,挂断等)。
[0111] 资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
[0112] 视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
[0113] IMS包括上述输入事件读取模块、输入事件过滤模块和输入事件分发模块,负责对外部输入设备对应的输入事件管理的服务。
[0114] 在一些实施例中,输入事件过滤模块还可以在电子设备开启辅助服务功能的情况下对输入事件读取模块读取的输入事件进行过滤。
[0115] 在一些实施例中,输入事件过滤模块还可以用于在接收到的输入事件为按下事件时提高HandlerThread线程的优先级,或者在接收到的输入事件为抬起事件时,恢复HandlerThread线程的优先线。
[0116] 在一些实施例中,输入事件过滤模块还可以用于提高/恢复输入事件消息的优先级。
[0117] system_server进程是电子设备操作系统中重要的进程,系统中主要的服务驻留在其中(例如,窗口管理服务(window  manager  server,WMS),活动管理服务(activitymanager service,AMS)等)。
[0118] 辅助服务用于给有残疾的用户或暂时无法与设备完全交互的用户提供了无障碍用户交互功能。比如屏幕朗读、文本转语音等交互功能。
[0119] 在一些实施例中,辅助服务还可以用于在开启辅助服务功能的情况下,电子设备的输入事件读取模块读取到输入事件后,利用HandlerThread线程运行输入事件过滤模块对输入事件进行过滤,其中,HandlerThread线程的优先级高于上述system_server进程中的主线程。如此,可以避免system_server进程中的主线程复杂环境的干扰,提高了输入事件过滤模块过滤任务的优先级,降低了输入响应延迟。
[0120] 例如,参考图7,在开启辅助服务功能的情况下,输入事件读取模块线程中检测到有输入事件任务时,触发HandlerThread线程中的输入事件过滤模块优先对输入事件进行过滤,并将过滤完的事件移交至输入事件分发模块线程。
[0121] 系统库可以包括多个功能模块。例如:表面管理器(surface manager),三维图形库(例如:openGL ES),2D图形引擎(例如:SGL)。
[0122] 表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
[0123] 三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
[0124] 2D图形引擎是2D绘图的绘图引擎。
[0125] SurfaceFlinger用于管理和渲染Android系统中应用程序的图形显示。
[0126] 内核层是硬件和软件之间的层。包括显示驱动等。
[0127] 硬件层包含电子设备基本的硬件设施例如显示屏等。
[0128] 应理解,在一些实施例中,内核层中还可以包括其他模块,例如摄像头驱动,音频驱动,传感器驱动等,在此不做限定。
[0129] 应理解,图6所示的软件架构只是一种示例,在另一些实施例中,适用于源设备和/或目的设备的软件架构可以是其他架构,在此不做限定。
[0130] 下面结合图6所示的软件架构示意图,介绍本申请的技术方案。
[0131] 图8根据本申请的一些实施例,示出了一种事件处理方法的过程示意图。
[0132] 电子设备在检测到用户开启辅助服务功能后,例如,用户任意开启至少一个与辅助服务功能相关的应用程序后,且在方案特性开关开启的情况下,辅助服务功能中的输入事件过滤模块管理可以建立用于运行输入事件过滤模块的HandlerThread线程。在检测到按下事件或抬起事件且方案特性开关开启的情况下,HandlerThread线程中的输入事件过滤模块可以通过线程优先级控制模块来调整HandlerThread线程的优先级、通过消息优先级控制模块来调整输入事件消息(例如MSG_INPUT_EVENT消息)的优先级。
[0133] 应理解,上述方案特性开关为开发人员在为电子设备设置相关程序时,设置的开关。在方案特性开关为开启状态时,电子设备可以实现本申请实施例提供的事件处理方法。
[0134] 下面结合图8所示的过程以及图9至图11,介绍本申请的技术方案。
[0135] 首先,介绍辅助服务中的输入事件过滤模块管理建立和退出HandlerThread线程的过程。
[0136] 图9根据本申请的一些实施例,示出了一种输入事件过滤模块管理建立和退出HandlerThread线程的流程示意图。该流程的执行主体为输入事件过滤模块管理,如图9所示,该流程包括如下步骤:
[0137] S901:检测到辅助服务功能开启。
[0138] 示例性地,输入事件过滤模块管理在检测到辅助功能开启的情况下,可以转至步骤S902。输入事件过滤模块管理检测到辅助服务功能开启的方式可以参考前述步骤S401,在此不做赘述。
[0139] S902:判断方案是否开启。
[0140] 示例性地,输入事件过滤模块管理在检测到辅助功能开启的情况下判断方案是否开启。如果方案开启,说明需要对HandlerThread线程进行管理(例如建立或退出),转至步骤S903;否则,结束流程。
[0141] 在一些实施例中,输入事件过滤模块管理可以在前述方案特性开关开启时,确定方案开启,转至步骤S903。
[0142] 应理解,方案开启,是指电子设备的开发人员在电子设备中设置了本申请实施例提供的事件处理方法的指令,并使能该部分指令可以被相关模块调用以实现本申请各实施例提供的事件处理方法。
[0143] 在一些实施例中,也可以不判断方案是否开启直接执行步骤S903,在此不做限定。
[0144] S903:建立用于运行输入事件过滤模块的HandlerThread线程。
[0145] 输入事件过滤模块管理在检测到辅助服务功能开启且方案开启的情况下,建立用于运行输入事件过滤模块的HandlerThread线程。
[0146] 应理解,HandlerThread线程对应的第一优先级高于系统服务的主线程的优先级。
[0147] S904:检测到辅助服务功能关闭。
[0148] 示例性地,输入事件过滤模块管理在检测到辅助功能关闭的情况下,可以转至步骤S905。输入事件过滤模块管理检测到辅助服务功能关闭的方式可以参考前述步骤S406,在此不做赘述。
[0149] S905:判断方案是否开启。
[0150] 示例性地,输入事件过滤模块管理在检测到辅助功能关闭的情况下判断方案是否开启。如果方案开启,说明需要对HandlerThread线程进行管理(例如建立或退出),转至步骤S906;否则,结束流程。
[0151] S906:退出用于运行输入事件过滤模块的HandlerThread线程。
[0152] 输入事件过滤模块管理在检测到辅助服务功能关闭且方案开启的情况下,退出用于运行输入事件过滤模块的HandlerThread线程。
[0153] 然后,介绍输入事件过滤模块中的线程优先级控制模块调整HandlerThread线程的优先级过程。
[0154] 图10根据本申请的一些实施例,示出了一种调整HandlerThread线程的优先级的流程示意图。该流程的执行主体为线程优先级控制模块,如图10所示,该流程包括如下步骤:
[0155] S1001:检测到按下事件。
[0156] 示例性地,线程优先级控制模块在前述输入事件读取模块读取到按下事件时,可以检测到按下事件,转至步骤S1002。
[0157] S1002:判断方案是否开启。
[0158] 示例性地,线程优先级控制模块判断方案是否开启。如果方案开启,说明需要对HandlerThread线程的优先级进行调整,转至步骤S1003;否则,结束流程。
[0159] 在一些实施例中,线程优先级控制模块可以在前述方案特性开关开启时,确定方案开启,转至步骤1003。
[0160] 应理解,方案开启,是指电子设备的开发人员在电子设备中设置了本申请实施例提供的事件处理方法的指令,并使能该部分指令可以被相关模块调用以实现本申请各实施例提供的事件处理方法。
[0161] 在一些实施例中,也可以不判断方案是否开启直接执行步骤S1003,在此不做限定。
[0162] S1003:提高HandlerThread线程的优先级。
[0163] 示例性地,线程优先级控制模块可以在检测到按下事件的情况下,将HandlerThread线程由第一优先级提高为第二优先级。如此,可以通过提高HandlerThread线程的优先级的方式来缩短电子设备响应输入事件的延迟。
[0164] S1004:检测到抬起事件。
[0165] 示例性地,线程优先级控制模块在前述输入事件读取模块读取到抬事件时,可以检测到抬起事件,转至步骤S1005。
[0166] S1005:判断方案是否开启。
[0167] 线程优先级控制模块判断方案是否开启。如果方案开启,说明需要对HandlerThread线程的优先级进行调整,转至步骤S1006;否则,结束流程。
[0168] 在一些实施例中,也可以不判断方案是否开启直接执行步骤S1006,在此不做限定。
[0169] S1006:恢复HandlerThread线程的优先级。
[0170] 示例性地,线程优先级控制模块可以在检测到抬起事件的情况下,将HandlerThread线程由第二优先级恢复为第一优先级。如此,可以避免HandlerThread线程的优先级过高影响其他任务的运行。
[0171] 其次,介绍输入事件过滤模块中的消息优先级控制模块调整输入事件消息的优先级的过程。
[0172] 图11根据本申请的一些实施例,示出了一种调整输入事件消息的优先级的过程的流程示意图。该流程的执行主体为消息优先级控制模块,如图11所示,该流程包括如下步骤:
[0173] S1101:检测到输入事件。
[0174] 消息优先级控制模块检测到输入事件,例如接收到输入事件读取模块发送的输入事件,触发对输入事件消息优先级的调整。
[0175] S1102:判断方案是否开启。
[0176] 消息优先级控制模块检测到输入事件后,判断方案是否开启。如果方案开启,说明需要对输入事件消息的优先级进行调整,转至步骤S1103;否则,结束流程。
[0177] 在一些实施例中,消息优先级控制模块可以在前述方案特性开关开启时,确定方案开启,转至步骤1103。
[0178] 在一些实施例中,也可以不判断方案是否开启直接执行步骤S1103,在此不做限定。
[0179] S1103:设置同步屏障。
[0180] 消息优先级控制模块在检测到输入事件且方案开启的情况下,在消息队列中设置同步屏障。
[0181] S1104:传递异步输入事件消息。
[0182] 消息优先级控制模块在消息队列中设置同步屏障后,可以将输入事件消息设置为异步消息,将向其他模块传递类型为异步的输入事件消息。
[0183] 在一些实施例中,步骤S1103和步骤S1104也可以同步执行,在此不做限定。
[0184] S1105:优先运行输入事件过滤模块。
[0185] 应理解,在消息队列中设置同步屏障且将输入事件消息设置为异步消息后,可以优先运行输入事件过滤模块,使得电子设备响应输入事件消息的延迟得以缩短。
[0186] S1106:在任务结束移除同步屏障。
[0187] 消息优先级控制模块在输入事件消息对应的任务结束后,移除同步屏障。如此,可以避免影响其他消息的传递。
[0188] 下面,结合前述图5至图11所示的实施例,介绍本申请的技术方案。
[0189] 图12根据本申请的一些实施例,示出了一种电子设备建立和退出HandlerThread线程的时序示意图。
[0190] 如图12所示,电子设备建立和退出HandlerThread线程的过程包括如下步骤:
[0191] S1201:辅助服务检测到辅助服务功能开启。
[0192] 示例性地,参考图5,当用户在辅助功能界面U0选择无障碍选项U01后,电子设备可以显示无障碍界面U02。辅助服务在检测到用户开启无障碍界面U02界面中至少一个选项时,例如检测到用户开启屏幕朗读选项U03时,检测到辅助服务功能开启,触发本申请实施例提供的方法。
[0193] 应理解,在另一些实施例中,辅助服务也可以通过其他方式检测辅助服务功能开启,在此不做限定。
[0194] S1202:辅助服务进程建立并启动HandlerThread线程。
[0195] 在辅助服务功能开启后,辅助服务可以建立独立于system_server进程主线程的HandlerThread线程,并通过star()函数来启动HandlerThread线程。
[0196] 应理解,HandlerThread线程对应的第一优先级可以是高于system_server进程主线程的优先级。
[0197] S1203:辅助服务获取HandlerThread线程的消息循环队列。
[0198] 示例性地,在HandlerThread线程启动后,辅助服务可以通过getLooper()函数来获取HandlerThread线程对应的Looper对象。
[0199] 应理解,电子设备中的每个线程都有且仅有唯一一个对应的Looper,其中,Looper可以用于在循环遍历消息队列接收到新的输入事件消息时,将新的输入事件消息发送给对应的目标(target)。
[0200] 应理解,在另一些实施例中,电子设备也可以通过其他函数或者其他方式来获取HandlerThread线程对应的Looper,在此不做限定。
[0201] S1204:辅助服务保存HandlerThread线程的消息循环队列。
[0202] 辅助服务HandlerThread线程的消息循环队列后,可以保存获取到的消息循环队列。
[0203] S1205:辅助服务建立无障碍输入事件过滤模块。
[0204] 示例性地,辅助服务可以通过new函数来建立无障碍输入事件过滤模块(AccessibilityInputFilter)。
[0205] 应理解,无障碍输入事件过滤模块是一个继承自输入事件过滤模块(InputFilter)的组件,用于对输入事件进行过滤
[0206] S1206:辅助服务将HandlerThread线程的消息循环队列传递给无障碍输入事件过滤模块。
[0207] 辅助服务建立无障碍输入事件过滤模块后,可以将前述步骤S1204存储的循环消息队列(例如looper对象)传递给无障碍输入事件过滤模块,使得无障碍输入事件过滤模块可以基于该循环消息队列实现相应的功能。
[0208] S1207:辅助服务调用输入事件过滤模块。
[0209] 示例性地,由于无障碍输入事件过滤模块是输入事件过滤模块的子类,辅助服务可以通过super()函数来调用输入事件过滤模块。
[0210] S1208:辅助服务将无障碍输入事件过滤模块中的消息循环队列传递给输入事件过滤模块。
[0211] 辅助服务在调用输入事件过滤模块后,可以将无障碍输入事件过滤模块中的消息循环队列传递给输入事件过滤模块。
[0212] S1209:辅助服务建立消息处理器。
[0213] 示例性地,辅助服务可以通过new handler()函数建立消息处理器(handler),以处理前述消息循环队列中的消息。
[0214] 应理解,在辅助服务建立消息处理器后,HandlerThread线程就可以运行输入事件过滤模块来对输入事件进行过滤。
[0215] 应理解,上述步骤S1201至步骤S1209所示出的建立HandlerThread线程只是一种示例。在另一些实施例中,也可以根据电子设备的操作系统所支持的其他方式来建立用于运行输入事件过滤模块的HandlerThread线程,在此不做限定。
[0216] S1210:辅助服务检测到辅助服务功能关闭。
[0217] 示例性地,参考图5,当用户关闭无障碍界面U02中所有已开启的选项时,辅助服务可以检测到辅助服务功能关闭。
[0218] S1211:辅助服务退出HandlerThread线程。
[0219] 当检测到辅助服务功能关闭后,辅助服务可以退出HandlerThread线程。
[0220] 示例性地,在一些实施例中,辅助服务可以通过quit()函数来退出HandlerThread线程。
[0221] 下面介绍调整HandlerThread线程和输入事件消息的优先级的技术方案。
[0222] 图13根据本申请的一些实施例,示出了一种调整HandlerThread线程和输入事件消息的优先级的时序示意图。
[0223] 如图13所示,电子设备调整HandlerThread线程和输入事件消息的优先级的过程可以包括如下步骤:
[0224] S1301:输入事件过滤模块接收到输入事件消息。
[0225] 示例性地,参考图3,输入事件读取模块在t20时刻前读取完输入事件,将读取到的输入事件传递给输入事件过滤模块,此时,输入事件过滤模块可以接收到输入事件消息。
[0226] S1302:输入事件过滤模块获取输入事件。
[0227] 输入事件过滤模块在接收到输入事件消息后,可以获取输入事件。例如,在一些实施例中,输入事件过滤模块可以通过getAction()函数,来获取输入事件。
[0228] S1303:输入事件过滤模块确定输入事件类型为按下事件或者抬起事件。
[0229] 示例性地,输入事件过滤模块可以根据getAction()函数获取的事件代码,来确定输入事件的类型是按下事件(ACTION_DOWN)或抬起事件(ACTION_UP)。
[0230] S1304:输入事件过滤模块根据输入事件的类型调整HandlerThread线程的优先级。
[0231] 在一些实施例中,在接收到的输入事件为按下事件的情况下,输入事件过滤模块可以将HandlerThread线程的优先级由第一优先级提高至第二优先级。如此,可以缩短输入事件消息的处理时间。
[0232] 在一些实施例中,在接收到的输入事件为抬起事件的情况下,输入事件过滤模块可以以HandlerThread线程的优先级恢复至第一优先级。
[0233] 例如,在一些实施例中,输入事件过滤模块可以通过电子设备定义的设置线程优先级的函数(例如setThreadScheduler函数)来调整HandlerThread线程的优先级。
[0234] S1305:输入事件过滤模块在输入事件的类型为按下事件的情况下,在消息队列中设置同步屏障。
[0235] 示例性地,在接收到的输入事件为按下事件的情况下,输入事件过滤模块可以通过在消息队列中设置同步屏障,来确保优先处理输入事件消息。
[0236] 例如,输入事件过滤模块可以通过postSyncBarrier()函数在消息队列中设置同步屏障。在设置同步屏障后,消息队列优先处理异步消息。
[0237] 应理解,本申请对于上述设置同步屏障的方式不做具体限定,只要确保屏障消息被发放即可。
[0238] S1306:输入事件过滤模块将输入事件消息设置为异步消息。
[0239] 示例性地,当在消息队列中设置同步屏障后,输入事件过滤模块可以通过函数setAsynchronous()将输入事件消息设为异步消息,来确保输入事件消息的优先级。
[0240] 应理解,当在消息队列中插入同步屏障且将输入事件消息设置为异步后,HandlerThread线程在遍历消息队列时将忽略其他同步消息,优先处理输入事件消息。
[0241] 应理解,在一些实施例中,步骤S1305和步骤S1306可以同步执行,在此不做限定。
[0242] S1307:输入事件过滤模块获取消息队列中的输入事件消息并发送给目标。
[0243] 输入事件过滤模块获取消息队列中的输入事件消息后,可以将输入事件消息发送给目标(例如输入事件分发模块)。
[0244] S1308:输入事件过滤模块确定输入事件消息处理完成。
[0245] 示例性地,输入事件过滤模块可以对接收到的输入事件消息进行过滤,如满足过滤条件则将输入事件发送给目标(例如输入事件分发模块),否则不做处理。输入事件过滤模块可以在将输入事件发送给目标或者确定不对输入事件进行处理时,输入事件消息处理完成。
[0246] 应理解,对于上述输入事件过滤模块的过滤条件,可以根据应用目标不同的应用条件进行改变,在本申请提供的实施例中,满足过滤条件的输入事件是指该应用程序需要响应的输入事件,对于其他实施例中输入事件过滤模块的过滤条件本申请在此不做具体限定。
[0247] S1309:输入事件过滤模块移除消息队列中的同步屏障。
[0248] 示例性地,在输入事件消息处理完成后,输入事件过滤模块可以通过removeSyncBarrier()函数来移除消息队列中同步屏障。
[0249] 应理解,移除同步屏障后,消息队列将恢复处理同步消息,此时不再优先处理异步消息,HandlerThread线程对应的Looper将按照各个消息进入消息队列的顺序依次处理消息队列中的所有消息。如此,可以避免影响其他消息的处理。
[0250] 进一步,本申请实施例提供一种电子设备10,用于实现前述各实现例提供的事件处理方法。
[0251] 具体地,图14根据本申请的一些实施例,示出了一种电子设备10的结构示意图。
[0252] 图14所示,电子设备10可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器
170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器
192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等等。
[0253] 处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digitalsignal processor,DSP),基带处理器,和/或神经网络处理器(neural‑network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0254] 控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0255] 处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从上述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
[0256] 在一些实施例中,处理器110可以调用并执行存储器中存储的本申请各实施例提供的事件处理方法对应指令,以实现本申请实施例所提供的事件处理方法。例如,处理110可以用于执行建立/退出用于运行输入事件过滤模块的第一线程的指令、执行提高/恢复第一线程优先级的指令、执行提高/恢复输入事件消息优先级的指令等。
[0257] USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备10充电,也可以用于电子设备10与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备。
[0258] 充电管理模块140用于从充电器接收充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
[0259] 电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。
[0260] 电子设备10的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
[0261] 天线1和天线2用于发射和接收电磁波信号。
[0262] 移动通信模块150可以提供应用在电子设备10上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
[0263] 无线通信模块160可以提供应用在电子设备10上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi‑Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(globalnavigation satellite system,GNSS),调频(frequency modulation,FM),近场通信(near field communication,NFC),红外(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
[0264] 显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light‑emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active‑matrix organic light emittingdiode的,AMOLED),柔性发光二极管(flex light‑emitting diode,FLED),mini‑LED,micro‑LED,micro‑OLED,量子点发光二极管(quantumdot light emitting diodes,QLED)等。在一些实施例中,电子设备10可以包括1个或N个显示屏194,N为大于1的正整数。
[0265] 电子设备10通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
[0266] 摄像头193用于捕获静态图像或视频。
[0267] 外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备10的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
[0268] 内部存储器121可以用于存储计算机可执行程序代码,上述可执行程序代码包括指令。内部存储器121可以包括程序存储区和数据存储区。其中,程序存储区可存储操作系统,至少一个功能所需的应用程序等。数据存储区可存储电子设备10使用过程中所创建的数据等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器110中的存储器的指令,执行电子设备10的各种功能应用。
[0269] 电子设备10可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
[0270] 音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。
[0271] 扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。
[0272] 受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。
[0273] 麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。
[0274] 耳机接口170D用于连接有线耳机。
[0275] 按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备10可以接收按键输入,产生与电子设备10的用户设置以及功能控制有关的键信号输入。
[0276] 马达191可以产生振动提示。
[0277] 指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
[0278] SIM卡接口195用于连接SIM卡。
[0279] 可以理解,本申请实施例示出的电子设备10的结构并不构成对电子设备10的具体限定。在本申请另一些实施例中,电子设备10可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0280] 应理解,图14所示的电子设备10的结构只是一种示例,在另一些实施例中,电子设备10可以包括更多或更少的模块,也可以合并或拆分部分模块,在此不做限定。
[0281] 应理解,电子设备10可以是任意包括辅助服务功能的电子设备,包括但不限于[0282] 本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码或程序产品,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
[0283] 可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器、微控制器、专用集成电路或微处理器之类的处理器的任何系统。
[0284] 程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
[0285] 在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读存储介质分发。因此,机器可读存储介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、磁光盘、随机存取存储器、可擦除可编程只读存储器、电可擦除可编程只读存储器、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读存储介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读存储介质。
[0286] 在附图中,可以以特定布置和/或顺序示出一些结构、模块或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
[0287] 需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”是指包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0288] 虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。