著录项信息
专利名称 | 一种应用程序的启动方法及启动装置 |
申请号 | CN201410738275.5 | 申请日期 | 2014-12-05 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-03-04 | 公开/公告号 | CN104391707A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/451 | IPC分类号 | G;0;6;F;9;/;4;5;1;;;G;0;6;F;9;/;4;4;5查看分类表>
|
申请人 | 上海斐讯数据通信技术有限公司 | 申请人地址 | 上海市松江区思贤路3666号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 上海斐讯数据通信技术有限公司 | 当前权利人 | 上海斐讯数据通信技术有限公司 |
发明人 | 梁小飞 |
代理机构 | 杭州千克知识产权代理有限公司 | 代理人 | 周希良 |
摘要
本发明提供一种应用程序的启动方法及应用程序的启动装置。所述应用程序的启动方法包括:在休眠状态下,识别触摸手势;将识别出的触摸手势转换为Linux按键事件并上报至用户空间;将所述Linux按键事件转换为Android按键事件;在所述Android按键事件分发给应用层之前进行拦截;由应用程序控制模块根据所述Android按键事件对应用程序进行相应操作。本发明的应用程序的启动方法及装置在不唤醒触摸屏的情况下可以快速启动应用程序,从而简化了启动流程,提高了启动速率;另外,由于不需要唤醒触摸屏,还可以有效地降低功耗。
1.一种应用程序的启动方法,其特征在于,所述应用程序的启动方法包括:
在休眠状态下,识别触摸手势;
将识别出的触摸手势转换为Linux按键事件并上报至用户空间;
将所述Linux按键事件转换为Android按键事件;
在所述Android按键事件分发给应用层之前进行拦截;
由应用程序控制模块根据所述Android按键事件对应用程序进行相应操作。
2.根据权利要求1所述的应用程序的启动方法,其特征在于:所述在休眠状态下,识别触摸手势的步骤包括:
在触摸屏驱动中修改宏定义;
在休眠状态下,检测触摸屏上的触摸手势;
判断当前触摸屏是否为休眠状态;
当处于休眠状态时,判断所述触摸手势是否为预设手势;
当所述触摸手势为预设手势时,将识别出的触摸手势转换为Linux按键事件并上报至用户空间。
3.根据权利要求1所述的应用程序的启动方法,其特征在于:所述将识别出的触摸手势转换为Linux按键事件并上报至用户空间的步骤包括:
将预设手势和应用程序的按键事件进行定义以实现匹配;
当识别到触摸手势为预设手势时,通过Linux input subsystem将所述预设手势对应的应用程序的按键事件上报至用户空间。
4.根据权利要求1所述的应用程序的启动方法,其特征在于:所述在所述Android按键事件分发给应用层之前进行拦截的步骤包括:在将Android按键事件分发给应用层之前,通过PhoneWindowManager的interceptKeyBeforeQueueing()方法实现拦截。
5.根据权利要求1所述的应用程序的启动方法,其特征在于:在实现拦截之后,使用Androidbrodcast通知应用程序控制模块。
6.一种应用程序的启动装置,其特征在于,所述应用程序的启动装置包括:
手势识别模块,用于在休眠状态下识别触摸手势;
手势转换模块,用于将识别出的触摸手势转换为Linux按键事件并上报至用户空间;
事件转换模块,用于将所述Linux按键事件转换为Android按键事件;
事件拦截模块,用于在所述Android按键事件分发给应用层之前进行拦截;
应用程序控制模块,用于根据所述Android按键事件对应用程序进行相应操作。
7.根据权利要求6所述的应用程序的启动装置,其特征在于:所述手势识别模块包括:
修改单元,用于在触摸屏驱动中修改宏定义;
检测单元,用于在休眠状态下,检测触摸屏上的触摸手势;
状态判断单元,用于判断当前触摸屏是否为休眠状态;
手势判断单元,用于当处于休眠状态时,判断所述触摸手势是否为预设手势;
所述手势转换模块连接所述手势判断单元,用于当所述触摸手势为预设手势时,将识别出的触摸手势转换为Linux按键事件并上报至用户空间。
8.根据权利要求6所述的应用程序的启动装置,其特征在于:所述手势转换模块包括:
定义单元,用于将预设手势和应用程序的按键事件进行定义以实现匹配;
调用单元,用于当识别到触摸手势为预设手势时,调用Linux input subsystem将所述预设手势对应的应用程序的按键事件上报至用户空间。
9.根据权利要求6所述的应用程序的启动装置,其特征在于:所述事件拦截模块用于在将Android按键事件分发给应用层之前,通过PhoneWindowManager的
interceptKeyBeforeQueueing()方法实现拦截。
10.根据权利要求6所述的应用程序的启动装置,其特征在于:所述事件拦截模块在实现拦截之后,使用Androidbrodcast通知应用程序控制模块。
一种应用程序的启动方法及启动装置\n技术领域\n[0001] 本发明涉及通信技术领域,特别是涉及一种应用程序的启动方法及应用程序的启动装置。\n背景技术\n[0002] 随着技术的发展,移动终端特别是手机被广泛应用。目前大多数手机采用Android系统,并且现有的Android系统手机,基本都是全触屏操作,屏幕是一个基本的触摸输入和图像显示设备。在手机进入休眠状态时,由于屏幕也会一同进入休眠状态,也就是休眠状态。进入休眠状态的屏幕会关闭触摸和显示功能,因此用户无法在休眠状态下通过触摸屏操作手机,也无法看到图像。\n[0003] 在现有Android系统中,若想在休眠状态下启动某项应用程序,如打开手电筒时,需要先按下电源键等按键点亮屏幕,解锁后进入Launcher应用,然后找到手电筒应用打开手电筒。也就是说,现有的Android系统,要想在休眠状态下打开手电筒,就需要点亮屏幕、解锁、启动手电筒应用、打开手电筒等操作。但是这种操作比较繁琐,而且点亮屏幕的过程消耗了部分电池电量。\n[0004] 因此,如何在休眠状态下简便快捷的启动应用程序就成为本领域技术人员亟待解决的问题之一。\n发明内容\n[0005] 鉴于以上所述现有技术的缺点,本发明的目的在于提供一种应用程序的启动方法及应用程序的启动装置,用于解决现有技术中启动应用程序繁琐的问题。\n[0006] 为实现上述目的及其他相关目的,本发明提供一种应用程序的启动方法,包括:在休眠状态下,识别触摸手势;将识别出的触摸手势转换为Linux按键事件并上报至用户空间;将所述Linux按键事件转换为Android按键事件;在所述Android按键事件分发给应用层之前进行拦截;由应用程序控制模块根据所述Android按键事件对应用程序进行相应操作。\n[0007] 优选地,所述在休眠状态下,识别触摸手势的步骤包括:在触摸屏驱动中修改宏定义;在休眠状态下,检测触摸屏上的触摸手势;判断当前触摸屏是否为休眠状态;当处于休眠状态时,判断所述触摸手势是否为预设手势;当所述触摸手势为预设手势时,将识别出的触摸手势转换为Linux按键事件并上报至用户空间。\n[0008] 优选的,所述将识别出的触摸手势转换为Linux按键事件并上报至用户空间的步骤包括:\n[0009] 将预设手势和应用程序的按键事件进行定义以实现匹配;当识别到触摸手势为预设手势时,通过Linux input subsystem将所述预设手势对应的应用程序的按键事件上报至用户空间。\n[0010] 优选的,所述在所述Android按键事件分发给应用层之前进行拦截的步骤包括:在将Android按键事件分发给应用层之前,通过PhoneWindowManager的\ninterceptKeyBeforeQueueing()方法实现拦截。\n[0011] 优选的,在实现拦截之后,使用Androidbrodcast通知应用程序控制模块。\n[0012] 相应地,本发明还提供一种应用程序的启动装置,所述应用程序的启动装置包括:\n手势识别模块,用于在休眠状态下识别触摸手势;手势转换模块,用于将识别出的触摸手势转换为Linux按键事件并上报至用户空间;事件转换模块,用于将所述Linux按键事件转换为Android按键事件;事件拦截模块,用于在所述Android按键事件分发给应用层之前进行拦截;应用程序控制模块,用于根据所述Android按键事件对应用程序进行相应操作。\n[0013] 优选的,所述手势识别模块包括:修改单元,用于在触摸屏驱动中修改宏定义;检测单元,用于在休眠状态下,检测触摸屏上的触摸手势;状态判断单元,用于判断当前触摸屏是否为休眠状态;手势判断单元,用于当处于休眠状态时,判断所述触摸手势是否为预设手势;所述手势转换模块连接所述手势判断单元,用于当所述触摸手势为预设手势时,将识别出的触摸手势转换为Linux按键事件并上报至用户空间。\n[0014] 优选的所述手势转换模块包括:定义单元,用于将预设手势和应用程序的按键事件进行定义以实现匹配;调用单元,用于当识别到触摸手势为预设手势时,调用Linux input subsystem将所述预设手势对应的应用程序的按键事件上报至用户空间。\n[0015] 优选的,所述事件拦截模块用于在将Android按键事件分发给应用层之前,通过PhoneWindowManager的interceptKeyBeforeQueueing()方法实现拦截。\n[0016] 优选的,所述事件拦截模块在实现拦截之后,使用Androidbrodcast通知应用程序控制模块。\n[0017] 如上所述,本发明的应用程序的启动方法及启动装置,具有以下有益效果:\n[0018] 本发明应用程序的启动方法中,在休眠状态下对触摸手势进行识别和转换,并在按键事件分发给应用层之前进行拦截,由应用程序控制模块对应用程序进行相应操作。通过这样的方式,可以在休眠状态下实现应用程序的启动,由于按键事件不会被分发至应用层,因此简化了按键事件的处理流程,从而提高了应用程序的启动速率;\n[0019] 进一步地,本发明的应用程序方法,在按键事件分发给应用层之前进行拦截,从而无需唤醒屏幕,从而降低了功耗;\n[0020] 另外,在实现按键事件的拦截之后,使用Androidbrodcast通知应用程序控制模块;应用程序控制模块与事件拦截模块相互独立,减少对两模块之间的相互影响,从而方便了功能的维护和扩展。\n附图说明\n[0021] 图1显示为本发明应用程序的启动方法的流程示意图。\n[0022] 图2显示为图1中所示步骤S1的具体实现方式的流程示意图。\n[0023] 图3显示为图1中步骤S2的具体实现方式的流程示意图。\n[0024] 图4显示为本发明应用程序的启动装置的结构示意图。\n[0025] 图5显示为本发明应用程序的启动装置的具体实现方式的结构示意图。\n[0026] 元件标号说明\n[0027] 10 手势识别模块\n[0028] 20 手势转换模块\n[0029] 30 事件转换模块\n[0030] 40 事件拦截模块\n[0031] 50 应用程序控制模块\n[0032] 110 修改单元\n[0033] 120 检测单元\n[0034] 130 状态判断单元\n[0035] 140 手势判断单元\n[0036] 210 定义单元\n[0037] 220 调用单元\n[0038] S1~S5 步骤\n[0039] S11~S14 步骤\n[0040] S21~S22 步骤\n具体实施方式\n[0041] 正如背景技术中所述的,现有技术中在休眠状态下打开某项应用程序时,需要很繁琐的流程,并且,每次启动应用程序都需要唤醒触摸屏,从而增加功耗。\n[0042] 本发明提供一种可以在休眠状态下直接打开应用程序的实现方法,简化了点亮屏幕、解锁、启动应用等操作,不仅简化了应用程序的启动流程,而且本发明的方法不需要唤醒屏幕,从而还可以降低功耗。\n[0043] 以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。\n[0044] 需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。\n[0045] 请参阅图1,本发明提供一种应用程序的启动方法,所述应用程序的启动方法包括:\n[0046] 步骤S1,在休眠状态下,识别触摸手势;\n[0047] 步骤S2,将识别出的触摸手势转换为Linux按键事件并上报至用户空间;\n[0048] 步骤S3,将所述Linux按键事件转换为Android按键事件;\n[0049] 步骤S4,在所述Android按键事件分发给应用层之前进行拦截;\n[0050] 步骤S5,由应用程序控制模块根据所述Android按键事件对应用程序进行相应操作。\n[0051] 具体地,为实现触摸屏在休眠状态下的手势检查功能,需要先修改触摸屏驱动中的宏定义,修改好相关宏定义后,在休眠状态下,触摸屏的处理芯片即可实现手势识别功能。此时,当移动终端,如手机,进入休眠状态后,用手指在触摸屏上滑出手势,触摸屏即可根据硬件支持的手势,匹配识别出所滑的手势,从而完成手势识别功能。\n[0052] 对应地,参考图2,所述在休眠状态下,识别触摸手势的步骤可以包括:\n[0053] 步骤S11,在触摸屏驱动中修改宏定义;\n[0054] 步骤S12,在休眠状态下,检测触摸屏上的触摸手势;\n[0055] 步骤S13,判断当前触摸屏是否为休眠状态;\n[0056] 当触摸屏不处于休眠状态时,则按照原有的处理方式进行操作。此与现有技术相类似,本发明对此不做赘述。\n[0057] 当处于休眠状态时,执行步骤S14,判断所述触摸手势是否为预设手势;\n[0058] 当所述触摸手势为预设手势时,执行步骤S2,将识别出的触摸手势转换为Linux按键事件并上报至用户空间。\n[0059] 当所述触摸手势不为预设手势时,返回执行步骤S12,继续检测触摸屏上的触摸手势。\n[0060] 参考图3,所述将识别出的触摸手势转换为Linux按键事件并上报至用户空间的步骤可以包括:\n[0061] 步骤S21,将预设手势和应用程序的按键事件进行定义以实现匹配;\n[0062] 步骤S22,当识别到触摸手势为预设手势时,通过Linux input subsystem将所述预设手势对应的应用程序的按键事件上报至用户空间。\n[0063] 下面以应用程序为打开手电筒为例对图3所示的工作流程做进一步详细说明。\n[0064] 首先,根据图2所示的步骤将触摸屏中的相关宏定义修改好,从而使得触摸屏在休眠状态下仍然可以识别触摸手势。\n[0065] 然后,为了实现触摸手势与Linux按键事件的转换,需要定义打开手电筒手势和打开手电筒按键事件。打开手电筒手势从触摸屏支持的手势中选择一个,例如选择一个识别率高且手指容易滑的,如“L”。打开手电筒按键事件是一个自定义的按键事件,因此需要修改input.h,添加一个Linux按键事件,命名为TP_FLASHLIGHT,为避免与已有键码重复,按键码定义可以为现有最后一个键码加1。这样就完成了打开手电筒手势和按键事件的定义。\n[0066] 当触摸屏识别到“L”手势时,通过Linux input subsystem,将TP_FLASHLIGHT按键上报到用户空间,实现将手势转换为Linux按键事件。\n[0067] 需要说明的是,为了避免其他不需要的手势唤醒系统,触摸屏可以在休眠状态下只处理“L”手势,其他手势不作处理。当然,也可以设置其他的手势与应用程序的匹配,本发明对此不做限制。\n[0068] 继续参考图1,所述在所述Android按键事件分发给应用层之前进行拦截的步骤包括:在将Android按键事件分发给应用层之前,通过PhoneWindowManager的interceptKeyBeforeQueueing()方法实现拦截。\n[0069] 另外,在实现拦截之后,使用Androidbrodcast通知应用程序控制模块。\n[0070] 下面仍以打开手电筒为例对上述步骤S3、步骤S4和步骤S5的工作过程做进一步说明。\n[0071] 在具体实施例中,可以由Android framework按键事件处理模块读取上报的Linux按键事件,将Linux按键事件转换为Android按键事件,并在按键事件分发前拦截并通知手电筒控制模块。\n[0072] 虽然通过步骤S2上报了TP_FLASHLIGHT按键事件(Linux按键事件),但是Android并不能直接识别处理这个按键事件,需要转换为Android按键事件。\n[0073] 具体地,Android input reader读取Linux上报的按键事件时,会根据keyboard layout配置,将Linux按键事件转换为Android按键事件。因此需要在Android input system中添加与Linux按键TP_FLASHLIGHT的对应的Android按键定义,并实现从Linux按键到Android按键的转换。\n[0074] 要在Android中添加一个新的按键事件,首先需要在当前设备的keyboard layout文件中添加一个按键定义。keyboard layout定义格式为“key keycode name”,其中“key”关键字代表这是一个按键事件,keycode为linux按键码,name为按键名称,例如“key \n500TP_FLASHLIGHT”,代表一个按键,键码为500,键码名称为“TP_FLASHLIGHT”。添加完keyboard layout后,Android就可以识别TP_FLASHLIGHT这个Linux按键事件了。然后要添加Linux按键和Android对应,将Linux按键转换为Android按键事件。\n[0075] 定义一个按键对应关系需要添加以下三个部分:\n[0076] 在KeycodeLabels.h中添加Linux按键名称对应Android的键码,定义格式为“name keycode”。其中name为Linux按键名称,keycode为Android键码。例如“TP_FLASHLIGHT,\n300”,代表TP_FLASHLIGHT这个Linux按键名对应的Android按键码为300。\n[0077] 在keycodes.h的Android按键事件枚举中添加Android按键事件的定义,例如“AKEYCODE_TP_FLASHLIGHT=300”,代表Android按键AKEYCODE_TP_FLASHLIGHT的Android按键码为300。\n[0078] 在KeyEvent.java中添加Android按键定义、按键码对应的按键名称,这个按键将作为按键事件的标准API,供Android java framework和application使用。例如按键码定义为public static final int KEYCODE_TP_FLASHLIGHT=300,对应的按键名为“KEYCODE_TP_FLASHLIGHT”。\n[0079] 添加完成后,Android input system根据现有的按键处理流程,将Linux按键事件TP_FLASHLIGHT转换为Android按键事件KEYCODE_TP_FLASHLIGHT,并实现按键事件分发。当在休眠状态下,在屏幕上滑出“L”手势时,Android framework和application都可以识别到KEYCODE_TP_FLASHLIGHT这个按键事件。\n[0080] 为了减少按键事件的处理,将KEYCODE_TP_FLASHLIGHT这个按键事件(Android按键事件)在分发给application(应用层)前,在framework中通过PhoneWindowManager的interceptKeyBeforeQueueing()方法实现按键事件拦截,并使用Android broadcast通知手电筒控制模块来完成手电筒的操作。\n[0081] 手电筒控制模块接收Android framework的手电筒控制事件,完成对手电筒的控制。\n[0082] 该模块与Android framework部分使用Android broadcast通信方式,framework发出一个broadcast,手电筒控制模块接收该broadcast。手电筒可以使用照相机的LED闪光灯,通过Android Camera的API可以实现手电筒的打开和关闭功能。当接收到broadcast时,若当前手电筒处于关闭状态,则通过Android Camera API打开手电筒;若当前手电筒处于打开状态,则通过Android Camera API关闭手电筒。\n[0083] 本发明应用程序的启动方法,通过修改相应的宏定义来实现休眠状态下的手势识别功能,经过对手势的处理后在Android按键事件分发给应用层之前实现拦截,这样就不需要唤醒触摸屏,从而可以有效地降低功耗;并且,本发明的方法可以由手势直接在休眠状态下启动相应的应用程序,简化了应用程序的启动流程,提高了启动速率。\n[0084] 进一步地,应用程序控制模块与Android framework相互独立,减少了对Android framework的信赖,从而提高了功能的扩展性及便利性。\n[0085] 相应地,本发明还提供一种应用程序的启动装置,参考图4,所述应用程序的启动装置可以包括:\n[0086] 手势识别模块10,用于在休眠状态下识别触摸手势;\n[0087] 手势转换模块20,用于将识别出的触摸手势转换为Linux按键事件并上报至用户空间;\n[0088] 事件转换模块30,用于将所述Linux按键事件转换为Android按键事件;\n[0089] 事件拦截模块40,用于在所述Android按键事件分发给应用层之前进行拦截;\n[0090] 应用程序控制模块50,用于根据所述Android按键事件对应用程序进行相应操作。\n[0091] 具体的,参考图5,所述手势识别模块10包括:\n[0092] 修改单元110,用于在触摸屏驱动中修改宏定义;\n[0093] 检测单元120,用于在休眠状态下,检测触摸屏上的触摸手势;\n[0094] 状态判断单元130,用于判断当前触摸屏是否为休眠状态;\n[0095] 手势判断单元140,用于当处于休眠状态时,判断所述触摸手势是否为预设手势;\n[0096] 所述手势转换模块20连接所述手势判断单元140,用于当所述触摸手势为预设手势时,将识别出的触摸手势转换为Linux按键事件并上报至用户空间。\n[0097] 具体的,所述手势转换模块20包括:\n[0098] 定义单元210,用于将预设手势和应用程序的按键事件进行定义以实现匹配;\n[0099] 调用单元220,连接所述手势判断单元140,用于当识别到触摸手势为预设手势时,调用Linux input subsystem将所述预设手势对应的应用程序的按键事件上报至用户空间。\n[0100] 在具体实施例中,所述事件拦截模块40用于在将Android按键事件分发给应用层之前,通过PhoneWindowManager的interceptKeyBeforeQueueing()方法实现拦截。\n[0101] 所述事件拦截模块40在实现拦截之后,使用Androidbrodcast通知应用程序控制模块50。\n[0102] 本发明应用程序的启动装置的工作过程可参考前述应用程序的启动方法的描述,在此不再赘述。\n[0103] 本发明的应用程序的启动装置可以在不唤醒触摸屏的情况下实现应用程序的快速启动,从而提高应用程序的启动速率;另外,由于应用程序启动时不需要唤醒触摸屏,从而还可以降低功耗。\n[0104] 上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
法律信息
- 2022-02-15
专利权的转移
登记生效日: 2022.01.28
专利权人由山东火炬科技服务有限公司变更为普联软件股份有限公司
地址由250000 山东省济南市高新区新泺大街1768号齐鲁软件园大厦A309室变更为250000 山东省济南市高新区舜华路1号齐鲁软件园2号楼(创业广场B座)一层
- 2022-01-14
专利权的转移
登记生效日: 2022.01.04
专利权人由台州市吉吉知识产权运营有限公司变更为山东火炬科技服务有限公司
地址由318015 浙江省台州市椒江区洪家街道东环大道2388号农港城A区2-3167号变更为250000 山东省济南市高新区新泺大街1768号齐鲁软件园大厦A309室
- 2020-11-17
专利权的转移
登记生效日: 2020.11.05
专利权人由上海斐讯数据通信技术有限公司变更为台州市吉吉知识产权运营有限公司
地址由201616 上海市松江区思贤路3666号变更为318015 浙江省台州市椒江区洪家街道东环大道2388号农港城A区2-3167号
- 2018-01-30
- 2015-09-02
实质审查的生效
IPC(主分类): G06F 9/44
专利申请号: 201410738275.5
申请日: 2014.12.05
- 2015-03-04
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2013-01-16
|
2012-08-28
| | |
2
| |
2014-05-14
|
2013-11-22
| | |
3
| |
2014-07-02
|
2014-03-24
| | |
4
| |
2014-07-16
|
2014-04-30
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |