CN115934494A - 消息处理方法、终端设备及存储介质 - Google Patents
消息处理方法、终端设备及存储介质 Download PDFInfo
- Publication number
- CN115934494A CN115934494A CN202110963385.1A CN202110963385A CN115934494A CN 115934494 A CN115934494 A CN 115934494A CN 202110963385 A CN202110963385 A CN 202110963385A CN 115934494 A CN115934494 A CN 115934494A
- Authority
- CN
- China
- Prior art keywords
- message
- command
- thread
- processing
- command message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 34
- 238000012545 processing Methods 0.000 claims abstract description 179
- 238000000034 method Methods 0.000 claims abstract description 71
- 230000005540 biological transmission Effects 0.000 claims description 27
- 230000009471 action Effects 0.000 claims description 14
- 230000003993 interaction Effects 0.000 claims description 12
- 238000012795 verification Methods 0.000 claims description 9
- 125000004122 cyclic group Chemical group 0.000 claims description 4
- 230000008569 process Effects 0.000 description 39
- 230000006870 function Effects 0.000 description 32
- 238000012546 transfer Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 230000001133 acceleration Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000010079 rubber tapping Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000010897 surface acoustic wave method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
本申请实施例公开了一种消息处理方法、终端设备及存储介质,属于终端技术领域,能够解决现有技术中Adb命令消息处理效率较低的问题。该方法应用于通过安卓守护程序模块与主机通信的终端设备,该安卓守护程序模块包括并行运行的接收线程和处理线程;该方法包括:通过接收线程从该主机接收第一命令消息,并缓存第一命令消息,通过该处理线程从至少一个命令消息中获取第二命令消息,对第二命令消息进行处理,得到第一回复消息;其中,该至少一个命令消息为通过该接收线程依次从该主机接收并缓存、且未处理的命令消息。
Description
技术领域
本申请涉及终端技术领域,尤其涉及一种消息处理方法、终端设备及存储介质。
背景技术
目前,通过调试桥(Android Debug Bridge,Adb)命令可以在主机上操作安卓(android)终端设备。Adb命令可用于执行各种设备操作(例如安装和调试应用),并提供对可用来在设备上运行各种命令(Unix shell)的访问权限。
然而,Adb命令消息处理过程为:主机通过主机上的Adb客户端发送命令消息,终端设备通过终端设备中的Adb守护程序处理命令消息,在命令消息处理完成后再向主机回复结果消息,然后才可以进行下一次的命令交互。
如此,当主机要通过Adb命令向终端设备发送多条命令消息时,上述命令消息处理过程耗时较长,处理效率较低。
发明内容
本申请实施例提供了一种消息处理方法、终端设备及存储介质,以解决现有技术中Adb命令消息处理效率较低的问题。
本申请实施例的第一方面,提供一种消息处理方法,应用于通过安卓守护程序模块与主机通信的终端设备,该安卓守护程序模块包括并行运行的接收线程和处理线程;该方法包括:通过接收线程从该主机接收第一命令消息,并缓存第一命令消息,通过该处理线程从至少一个命令消息中获取第二命令消息,对第二命令消息进行处理,得到第一回复消息;其中,该至少一个命令消息为通过该接收线程依次从该主机接收并缓存、且未处理的命令消息。
本申请实施例的第二方面,提供一种终端设备,该终端设备包括:安卓守护程序模块,该安卓守护程序模块用于与主机通信,该安卓守护程序模块包括并行运行的接收线程和处理线程;该安卓守护程序模块,用于通过该接收线程从该主机接收第一命令消息,并缓存第一命令消息;以及用于通过该处理线程从至少一个命令消息中获取第二命令消息,对第二命令消息进行处理,得到第一回复消息;其中,该至少一个命令消息为通过该接收线程依次缓存且未处理的命令消息。
本申请实施例的第三方面,提供一种终端设备,该终端设备包括处理器、存储器及存储在该存储器上并可在该处理器上运行的程序或指令,该程序或指令被该处理器执行时实现如第一方面所述的消息处理方法的步骤。
本申请实施例的第四方面,提供一种可读存储介质,该可读存储介质上存储程序或指令,该程序或指令被处理器执行时实现如第一方面所述的消息处理方法的步骤。
本申请实施例的第五方面,提供了一种芯片,该芯片包括处理器和通信接口,该通信接口和该处理器耦合,该处理器用于运行程序或指令,实现如第一方面所述的消息处理方法。
本申请实施例中,终端设备包括与主机通信的安卓守护程序模块,该安卓守护程序模块包括并行运行的接收线程处理线程,终端设备可以通过该接收线程从该主机接收第一命令消息,并缓存第一命令消息,通过该处理线程从至少一个命令消息中获取第二命令消息,对第二命令消息进行处理,得到第一回复消息;其中,该至少一个命令消息为通过该接收线程依次从该主机接收并缓存、且未处理的命令消息。本方案中,接收线程从主机接收并缓存第一命令消息,与处理线程从接收线程缓存的至少一个命令消息中获取第二命令消息,并处理第二命令消息之间互不影响,可以单独执行,也可以同时执行,如此,在安卓守护程序模块中接收命令消息与处理命令消息可以并行执行,可以提高命令消息的处理效率,而且相比接收命令消息和处理命令消息串行执行的方案,可以避免因接收命令消息堵塞接收不到命令消息,而导致无法处理消息,从而可以提高命令消息处理效率。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例和现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种消息处理系统的结构示意图;
图2A为本申请实施例提供的消息处理方法的流程示意图之一;
图2B为本申请实施例提供的消息处理方法的流程示意图之二;
图3为本申请实施例提供的消息处理方法的流程示意图之三;
图4为本申请实施例提供的消息处理方法的流程示意图之四;
图5为本申请实施例提供的一种队列元素出队入队示意图;
图6为本申请实施例提供的消息处理方法的流程示意图之五;
图7为本申请实施例提供的消息处理方法的流程示意图之六;
图8为本申请实施例提供的消息处理方法的流程示意图之七;
图9为本申请实施例提供的一种终端设备的结构框图;
图10为本申请实施例提供的一种终端设备的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
Adb是一种客户端-服务器程序,包括以下三个组件:
(1)Adb客户端:用于发送命令。客户端在PC(主机)上运行。可以通过发出Adb命令从命令行终端调用客户端。
(2)Adb守护程序(Adb daemon,Adbd):用于在终端设备上运行命令。守护程序在每个终端设备上作为后台进程运行。
(3)Adb服务器:用于管理客户端与守护程序之间的通信。服务器在PC上作为后台进程运行。
使用Adb shell发出设备命令消息,可以达到交互式命令消息处理的目的。如:发出Activity管理器命令:Adb shell am start-a android.intent.action.VIEW;发出软件包管理器(pm)工具命令:Adb shell pm uninstall com.example.MyApp;将文件复制到设备或从设备复制到文件:Adb pull remote local或adb push local remote。但是Adb交互式命令消息处理,存在以下问题:
一、Adb命令消息处理为串行处理,即PC通过Adb客户端向终端设备发送命令消息,终端设备通过Adb守护进程接收并处理该命令消息,以得到回复消息,然后终端设备通过Adb守护进程向PC发送该回复消息。以此类推,终端设备循环执行接收、处理、发送的过程,因此Adb命令消息处理过程效率较低。
二、Adb目前支持的命令消息多是针对android系统级别的响应,无法完成特定于某一定制场景消息的处理,且在Adb架构上添加定制命令,过程比较繁琐。
为了解决上述问题,本申请实施例中,终端设备包括与主机通信的安卓守护程序模块,该安卓守护程序模块包括并行运行的接收线程处理线程,终端设备可以通过该接收线程从该主机接收第一命令消息,并缓存第一命令消息,通过该处理线程从至少一个命令消息中获取第二命令消息,对第二命令消息进行处理,得到第一回复消息;其中,该至少一个命令消息为通过该接收线程依次从该主机接收并缓存、且未处理的命令消息。本方案中,接收线程从主机接收并缓存第一命令消息,与处理线程从接收线程缓存的至少一个命令消息中获取第二命令消息,并处理第二命令消息之间互不影响,可以单独执行,也可以同时执行,如此,在安卓守护程序模块中接收命令消息与处理命令消息可以并行执行,可以提高命令消息的处理效率,而且相比接收命令消息和处理命令消息串行执行的方案,可以避免因接收命令消息堵塞接收不到命令消息,而导致无法处理消息,从而可以提高命令消息处理效率。
首先,图1为本申请实施例示出的一种消息处理系统。如图1所示,该系统包括至少一个主机11和至少一个终端设备12,图中以一个主机11和一个终端设备12为例示出,本申请实施例中主机通过PC tool与终端设备的安卓守护程序模块(android daemon)进行命令消息交互。
本申请实施例中的终端设备可以为移动终端设备,也可以为非移动终端设备。移动终端设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载终端设备、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等;非移动终端设备可以为个人计算机(personalcomputer,PC)、电视机(television,TV)、柜员机或者自助机等;本申请实施例不作具体限定。
本申请实施例提供的消息处理方法的执行主体可以为上述的终端设备(包括移动终端设备和非移动终端设备),也可以为该终端设备中能够实现该消息处理方法的功能模块和/或功能实体,具体的可以根据实际使用需求确定,本申请实施例不作限定。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的消息处理进行详细地说明。
如图2A所示,本申请实施例提供一种消息处理方法,该方法应用于(通过安卓守护程序模块)与主机通信的终端设备,该终端设备(安卓守护程序模块,也可以是其他的程序模块)包括并行运行的接收线程和处理线程。下面以执行主体为终端设备为例,对本申请实施例提供的消息处理方法进行示例性的说明。该方法可以包括下述的步骤201至步骤202。
201、终端设备通过该接收线程从该主机接收第一命令消息,并缓存第一命令消息。
202、终端设备通过该处理线程从至少一个命令消息中获取第二命令消息,对第二命令消息进行处理,得到第一回复消息。
其中,该至少一个命令消息为通过该接收线程依次缓存且未处理的命令消息。
可以理解,该至少一个命令消息中的每个命令消息均为通过该接收线程依次从主机接收并缓存的,且未通过处理线程处理的命令消息。
可选地,该至少一个命令消息可以包括第一命令消息,也可以不包括第一命令消息,本申请实施例不做限定。
需要说明的是,本申请实施例不限定上述步骤201和步骤202之间的执行顺序,例如,可以先执行上述步骤201,再执行上述步骤202;也可以先执行上述步骤202,再执行上述步骤201;还可以同时执行上述步骤201和上述步骤202。
本申请实施例中,接收线程和处理线程并行运行,互不影响,因此,在安卓守护程序模块中接收命令消息与处理命令消息可以并行执行,从而可以提高命令消息的处理效率,而且相比接收命令消息和处理命令消息串行执行的方案,可以避免因接收命令消息堵塞接收不到命令消息,而导致无法处理消息,无法发送回复消息,进而不能再重新接收新的命令消息,最终导致整个流程停滞,无法继续进行,从而阻碍命令消息的处理效率,本方案中无论哪个线程出现问题,都不会影响其他线程的执行,从而可以提高命令消息的处理效率。
可选地,第二命令消息满足以下任一项:该至少一个命令消息中接收时间最早的;该至少一个命令消息中处理优先级最高的;该至少一个命令消息中优先级最高的命令消息中接收时间最早的。
示例性地,第二命令消息可以为该至少一个命令消息中接收时间最早的,第二命令消息也可以为该至少一个命令消息中处理优先级最高的;第二命令消息也可以为该至少一个命令消息中优先级最高的命令消息中接收时间最早的,第二命令消息还可以为该至少一个命令消息中满足一定条件的命令消息,具体可以根据实际使用需求确定,本申请实施例不做限定。
本申请实施例中,提供了多种处理线程获取第二命令消息的策略,从而可以根据实际使用需求,获取更合适的第二命令消息并对第二命令消息进行处理。
可选地,该至少一个命令消息缓存在终端设备中命令消息对应的缓存区1中,该至少一个命令消息可以以队列的形式存储,也可以以其他的形式存储,具体可以根据实际使用情况确定,本申请实施例不做限定。
可以理解,上述步骤201中接收线程将第一命令消息缓存至缓存区1中,如果该至少一个命令消息以队列的形式存储,则接收线程将第一命令消息入命令消息队列。
本申请实施例中,该至少一个命令消息以队列的形式存储,可以达到平等、公平对待每一个命令消息。
可选地,在上述步骤202中,还包括将第二命令消息从该至少一个命令消息中删除。具体地,可以在处理线程获取到第二命令消息的过程中,即删除该至少一个命令消息中的第二命令消息(也就是说,获取第二命令消息的操作为读取并删除操作);也可以在处理线程对第二命令消息进行处理得到第一回复消息之后,再删除该至少一个命令消息中的第二命令消息(也就是说,获取第二命令消息的操作为仅为读取操作)。
本申请实施例中,提供了不同的从该至少一个命令消息中删除第二命令消息的时机,读取时即删除,可以节约缓存空间;得到第一回复消息后再删除,可以保证第二命令消息不会在处理过程中因为终端设备发生异常或故障等问题而丢失。
可选地,本申请实施例中,终端设备可以仅包括接收线程和处理线程,在上述步骤202之后,通过发送线程将第一回复消息发送至主机;终端设备还包括分别于上述的接收线程和处理线程并行的发送线程,如此,终端设备可以通过发送线程发送回复消息。
示例性地,该安卓守护程序模块还包括:发送线程,该发送线程分别与该接收线程和该处理线程并行运行;结合图2A,如图2B所示,在上述方法202之后,本申请实施例提供的消息处理方法还可以包括下述的步骤203;本申请实施例提供的消息处理方法还可以包括下述的步骤204。
203、终端设备通过该处理线程缓存第一回复消息。
204、终端设备通过该发送线程从至少一个回复消息中获取第二回复消息,并将第二回复消息发送至该主机。
其中,该至少一个回复消息为通过该处理线程缓存且未发送至该主机的回复消息。
可以理解,该至少一个回复消息中的每个回复消息均为通过该处理线程处理得到并缓存的,且未通过发送线程发送至该主机的回复消息。
可选地,该至少一个回复消息可以包括第一回复消息,也可以不包括第一回复消息,本申请实施例不做限定。
需要说明的是,本申请实施例不限定上述步骤201、步骤202和步骤204之间的执行顺序,以步骤202和步骤204之间的执行顺序为例说明,可以先执行上述步骤202,再执行上述步骤204;也可以先执行上述步骤204,再执行上述步骤202;还可以同时执行上述步骤202和上述步骤204。
本申请实施例中,接收线程、处理线程和发送线程分别可以并行执行,也就是说,接收命令消息、处理命令消息和发送回复消息是分别独立的,互不影响,因此,在安卓守护程序模块中接收命令消息、处理命令消息与发送回复消息可以并行执行,从而可以提高命令消息的处理效率,而且相比接收命令消息、处理命令消息和发送回复消息串行执行的方案,可以避免因接收命令消息堵塞接收不到命令消息,或者因处理命令消息的过程出现问题,再或者因发送命令消息发生堵塞无法发送命令消息,最终导致整个流程停滞,无法继续进行,从而阻碍命令消息的处理效率,本方案中无论哪个线程出现问题,都不会影响其他线程的执行,从而可以提高命令消息的处理效率。
可选地,第二回复消息满足以下任一项:该至少一个回复消息中处理时间最早的;该至少一个回复消息中发送优先级最高的;该至少一个回复消息中发送优先级最高的回复消息中处理时间最早的。
示例性地,第二回复消息可以为该至少一个回复消息中接收时间最早的,第二回复消息也可以为该至少一个回复消息中处理优先级最高的;第二回复消息也可以为该至少一个回复消息中优先级最高的回复消息中接收时间最早的,第二回复消息还可以为该至少一个回复消息中满足一定条件的回复消息,具体可以根据实际使用需求确定,本申请实施例不做限定。
本申请实施例中,提供了多种发送线程获取第二回复消息的策略,从而可以根据实际使用需求,获取更合适的第二回复消息并对第二回复消息进行处理。
可选地,该至少一个回复消息缓存在终端设备中回复消息对应的缓存区2中,该至少一个回复消息可以以队列的形式存储,也可以以其他的形式存储,具体可以根据实际使用情况确定,本申请实施例不做限定。
可以理解,上述步骤203中处理线程将第一回复消息缓存至缓存区2中,如果该至少一个回复消息以队列的形式存储,则处理线程将第一回复消息入回复消息队列。
本申请实施例中,该至少一个回复消息以队列的形式存储,可以达到平等、公平对待每一个回复消息。
可选地,在上述步骤204中,还包括将第二回复消息从该至少一个回复消息中删除。具体地,可以在发送线程获取到第二回复消息的过程中,即删除该至少一个回复消息中的第二回复消息(也就是说,获取第二回复消息的操作为读取并删除操作);也可以在发送线程对第二回复消息发送完成之后,再删除该至少一个回复消息中的第二回复消息(也就是说,获取第二回复消息的操作仅为读取操作)。
本申请实施例中,通过安卓守护程序模块实现接收线程、处理线程和发送线程并行执行,实现接收命令消息、处理命令消息和发送回复消息并行执行,过程简单、易于实现、而且易于扩展,可以提高命令消息的处理效率。
需要说明的是,本申请实施例中,安卓守护程序模块可以只包括接收线程和处理线程,也可以包括接收线程、处理线程和发送线程。实际中,安卓守护程序模块也可以仅包括处理线程(处理线程可以从主机接收命令消息)和发送线程,具体可以参考上述描述,本申请实施例不做限定。
需要说明的是,本申请实施例提供的消息处理方法主要可以应用与拥有安卓系统的终端设备,但也可以扩展到其他系统,且可以通过USB接口与主机进行通信的其他终端设备,此处不再赘述。
本申请实施例中,可以应用于消息处理场景,具体可以应用于接收命令消息、处理命令消息和发送回复消息并行执行的场景。
示例性地,以安卓守护程序模块包括并行执行的接收线程、处理线程和发送线程,接收线程将接收到的命令消息入命令消息队列;处理线程将处理得到的回复消息入回复消息队列。具体地,如图3所示,包括下述步骤301至步骤305:301、接收线程通过USB接口的端点2(ep2)接收命令消息;302、接收线程将命令消息入命令消息队列;303、处理线程依次从命令消息队列中取出命令消息进行处理,并将回复消息入回复消息队列;304、发送线程将回复消息队列中的回复消息依次发送至主机;305、发送线程通过USB接口的端点1(ep1)发送回复消息。本申请实施例中,主机(PC tool)向终端设备的安卓守护程序模块(Androiddaemon)批量发送多条命令消息,即不用等待处理完成当前命令消息即可发送下条命令消息。Android daemon的接收线程将收到的多条命令消息先缓存入命令消息队列。处理线程依次处理命令消息队列中的各个命令消息,然后将每条命令消息处理的结果(回复消息)依次缓存入回复消息队列。发送线程依次从回复消息队列中取出回复消息发送给PC tool。三个线程互相独立,各自独立循环上述流程。
承接上述示例,接收线程(Receive_thread)和发送线程(send_thread)都会运行如下图4所示的端点线程(ep_thread)函数,在一次for循环中,先使用入(in)函数指针处理,然后再使用出(out)函数指针处理。本申请实施例中,如图5所示,可以使用C++STL标准库中的queue(队列)来实现队列的目的。queue只能在队列的末尾添加新元素,只能从头部移除元素。queue常用接口和基本操作如下:
(1)front()函数:返回queue中第一个元素的引用。如果queue是常量,就返回一个常引用;如果queue为空,返回值是未定义的。
(2)back():返回queue中最后一个元素的引用。如果queue是常量,就返回一个常引用;如果queue为空,返回值是未定义的。
(3)push(const T&obj):在queue的尾部添加一个元素的副本。这是通过调用底层容器的成员函数push_back()来完成的。
(4)push(T&&obj):以移动的方式在queue的尾部添加元素。这是通过调用底层容器的具有右值引用参数的成员函数push_back()来完成的。
(5)pop():删除queue中的第一个元素。
(6)size():返回queue中元素的个数。
(7)empty():如果queue中没有元素的话,返回true。
具体的接收线程、处理线程和发送线程的过程如下:
接收线程(Receive_thread)
结合图4,如图6所示,对Receive_thread而言,先使用in指针:即使用读(read)函数读取端点2(ep2),可接收到此次主机(PC tool)传输过来的命令消息,然后再使用out指针:入队命令(enqueue_command)函数将命令消息添加(push)到命令消息队列。
命令消息队列command_queue用来缓存PC tool发送来的命令消息,目的是Receive_thread将当前接收的命令消息入队后,即可开始下次的接收操作,使得接收操作可以并行起来,不必串行等待每次的消息处理后再进行下次命令的接收。command_queue命令消息的入队使用enqueue_command函数调用Queue push接口来完成。
处理线程(handle_thread)
如图7所示,该线程只要负责命令的处理,操作步骤如下:701、使用出队命令(Dequeue_command)函数调用队列取出(Queue front)接口取出命令消息队列的队头元素;702、命令处理(handle_command)函数对刚出队的命令消息进行处理;703、队列回复(Enqueue_reply)函数调用队列添加(Queue push)接口将回复消息(命令处理结果)入回复消息队列(reply_queue);回复消息队列(reply_queue)用来缓存处理得到的回复消息,目的是handle_thread将当前命令消息处理完毕后即将回复消息入队后,即可开始下个命令消息的处理操作,使得处理操作可以循环起来,不必串行等待此次的处理结果(回复消息)发送到PC tool后再进行下次命令的处理。reply_queue回复消息的入队使用enqueue_command函数调用Queue push接口来完成。704、命令消息队列(command_queue)将队头元素出队,当前此条command的生命周期才结束。当前命令处理完毕后,需要将command_queue命令消息队列中的当前命令出队,使用Queue的pop函数来完成comand_queue的当前command出队操作。
发送线程(Send_thread)
结合图4,如图8所示,对于Send_thread线程而言,先使用入(in)指针:读(read_reply)函数将回复消息队列中的回复消息读出来,然后再使用出(out)指针:使用写(write)函数将读出的回复消息写到端点1(ep1),然后通过端点1(ep1)发送到主机(PCtool);在回复消息发送成功后,在将该回复消息从回复消息队列中pop出来(即删除)。
本申请实施例中,receive_thread负责接收PC tool命令消息,然后将命令消息在command_queue(命令消息队列)中缓存,该receive_thread只负责实时接收PC tool端命令,并不受命令处理流程影响;handle_thread负责将command_queue中命令依次读取出来,并进行处理(不同的命令消息通过不同的动作处理),然后将回复消息在reply_queue(回复消息队列)中缓存,该handle_thread只负责循环处理command_queue中的命令,并不受回复消息发送流程的影响;send_thread负责将reply_queue中的回复消息依次实时发送给PCtool端,reply_queue队列中一旦有回复消息,就循环发送该队列中的消息。如此,receive_thread和handle_thread两者之间由于command_queue的存在可以使得接收命令和处理命令并行,handle_thread和send_thread两者之间由于reply_queue的存在可以使得处理命令和回复结果并行,即三个流程,接收命令、处理命令、回复结果在该方案中都可以并行执行。
本申请实施例中,android daemon接收命令消息、处理命令消息、发送回复消息流程并行化,一旦PC tool下发命令消息,receive_thread即可接收到命令消息;handle_thread不受通信流程影响,只要command_queue不空,即循环处理该队列中的命令消息;一旦reply_queue回复消息队列不空,send_thread即循环取出回复消息向PC tool回复,PCtool即可接收到一条命令消息对应的回复消息。本申请实施例中,搭建了一套跨机间并行消息处理和传输的框架。终端设备端运行android daemon程序,负责接收命令消息、处理命令消息、发送回复消息;PC tool程序负责发送命令消息和接收回复消息。
可选地,本申请实施例中,终端设备的安卓守护程序模块与主机的PC tool可以通过通用串行总线(Universal Serial Bus,USB)端口已有的接口进行通信,也可以通过新建的USB接口进行通信。
示例性地,终端设备可以在安卓守护程序模块运行起来之后,根据需要创建对应的USB接口。在上述步骤201之前,本申请实施例提供的消息处理方法还可以包括下述的步骤205。
205、在通过该接收线程从该主机接收命令消息之前,终端设备通过该安卓守护程序模块在该终端设备的通用串行总线USB接口上创建传输接口。
其中,该传输接口包括第一端点、第二端点和第三端点;第一端点用于传输该安卓守护程序模块和该主机之间的控制信息,第二端点用于从该主机接收命令消息,第三端点用于向该主机发送回复消息。
按照USB协议,一个USB设备(device)有一个设备描述符,一个设备描述符有一个或者多个配置描述符,一个配置描述符有一个或者多个接口(在装置(gadget)端,接口正式命名是usb_func)。一个接口有至少一个端点,每个接口下必然有端点0,不一定有其他端点。其中,每个接口下的端点0可以双向传输,用来传输控制信息;每个接口下的其他端点都是单向传输(例如device->host(终端设备到主机)或host->device(主机到终端设备))。
安卓守护程序模块(Android daemon)新建用于数据传输的gadget接口transfer(接口名称为transfer,可以为传输接口)。使用USB gadget configFs来创建transfer接口需要的功能(function)。在安卓终端设备中已有的gadget g1中新增transfer接口和function(新增接口和接口功能)。
该transfer接口包含三个端点(endpoint,分别为ep0,ep1和ep2),通过ep0端点传输控制信息,通过ep1端点维护发送线程(send_thread,数据传输方向:终端设备到主机),主要用来发送终端设备给主机的回复消息;通过ep2端点维护接收线程(receive_thread,数据传输方向:主机到终端设备),主要用来接收主机段发送的命令消息。
安卓守护程序模块向ep0端点写入描述符后,即transfer接口创建完毕,此时transfer接口下自动生成ep1端点和ep2端点。ep1是由终端设备向主机侧(即androiddaemon->PC tool)发送回复消息使用的端点,在本方案中,即终端设备使用该端点向主机侧回复命令处理结果(即发送回复消息)。ep2是由主机向终端设备侧(即PC tool->androiddaemon)发送命令消息使用的端点,在本方案中,即主机向终端设备使用该端点发送命令消息。
本申请实施例中,维护新的USB接口(transfer接口),不与其他USB设备接口耦合,如该transfer接口不会影响终端设备中已存在的USB接口(如adb接口和mtp接口、ptp接口等),且该transfer接口可由安卓守护程序模块(daemon)自行控制,安卓守护程序模块运行起来后,才创建该transfer接口,可以保证使用时打开,不使用时关闭,灵活配置,使得transfer接口对终端设备的影响降到最低。而且,通过新建的transfer接口进行传输,相对比较稳定,传输成功率较高。
可选地,第二命令消息为定制命令;上述步骤202具体可以通过下述步骤202a至202b实现。
202a、终端设备通过该安卓守护程序模块为该处理线程增加该定制命令对应的处理动作。
202b、终端设备通过该处理线程中的该处理动作对该定制命令进行处理,得到第一回复消息。
定制命令,即为扩展的、添加的、定义的新命令。
可以理解,如果需要定制命令,则可以在处理线程中添加定制命令的处理动作即可,其他部分不用修改,具体的接收线程、发送线程及处理线程的其他操作过程等均不需要修改。如下是定制命令的处理流程:接收线程接收定制命令,缓存定制命令(例如,入命令消息队列command_queue),处理线程(handle_thread)调用定制命令对应的动作处理定制命令,得到定制命令对应的回复消息,缓存该定制命令对应的回复消息(例如,入回复消息队列reply_queue),然后通过发送线程(send_thread)将定制命令对应的回复消息发送至主机。
本申请实施例中,易于扩展新命令,而且若新增命令(定制命令),该方案中安卓守护程序模块只需在处理线程(handle_thread)的处理函数(handle_command)中增加新命令的处理动作,而接收线程(receive_thread)和发送线程(send_thread)无需任何改动;主机(PC tool)端可以按需进行扩展发送定制命令,终端设备的接收线程(receive_thread)接收定制命令,在处理线程的处理函数(handle_command)处理定制命令,将定制命令的回复结果通过发送线程(send_thread)回复给主机。
可选地,该安卓守护程序模块包括软件开发工具包(Software Development Kit,SDK)接口;本申请实施例提供的消息处理方法还可以包括下述的步骤206。
206、在该终端设备中的第三方应用程序接入该SDK接口的情况下,终端设备通过该安卓守护程序模块执行第三方应用程序与该主机之间的命令交互。
可以理解,如果终端设备的第三方应用程序有接收主机端的命令处理消息的需求,安卓守护程序模块可以释放(release)出SDK接口,第三方应用程序可以通过接入该SDK接口来复用该消息处理方案(即复用安卓守护程序模块的接收线程、处理线程和发送线程),即采用该方案与主机侧进行命令交互。
可以理解,终端设备通过该安卓守护程序模块为该处理线程增加第三应用程序对应的处理动作。然后终端设备通过该处理线程中的第三应用程序对应的处理动作对第三应用程序对应的命令消息进行处理,得到对应的回复消息。
本申请实施例中,通过SDK接口实现利用安卓守护程序模块的接收线程、处理线程和发送线程可以处理第三方应用程序与主机之间的命令交互,该过程操作简单,易于实现,修改较少,可以提高第三方应用程序与主机之间命令交互效率。
因为本申请实施例中,因为主机和终端设备之间通过USB接口进行数据传输,如果传输的数据信息是有关用户的隐私数据或者终端设备的关键控制信息,终端设备的信息安全将很难保证,因此较容易伪造主机端程序向终端设备发送命令消息或接收回复消息,从而造成终端设备的信息泄露等问题。
可选地,本申请实施例中,主机与终端设备进行消息交互之前,可以先进行握手验证,在握手验证成功的情况下,在进行消息交互。
示例性地,上述步骤201具体可以包括下述步骤201a。
201a、在该安卓守护程序模块与该主机握手验证成功的情况下,终端设备通过该接收线程从该主机接收第一命令消息。
可以理解,本申请实施例中,在终端设备创建传输接口(transfer接口)之后,在接收初始命令消息之前,进行握手验证。具体地,握手验证过程可以参考现有相关技术,本申请实施例不做限定。
示例性地,主机向终端设备发送询问消息,询问终端设备当前状态,以及是否准备好(ready)等信息,若主机接收到终端设备回复状态ok和已经ready的回复消息,则握手验证成功。
本申请实施例中,主机和终端设备在数据信息传输开始前进行握手验证,双方通过握手验证确认双方身份后再进行数据传输(如果握手验证失败,则停止数据传输),可以在一定程度上保证终端设备的信息安全。
可选地,本申请实施例中,主机与终端设备进行消息交互的过程中,可以对交互的消息进行循环冗余校验码(Cyclic Redundancy Check,CRC)校验,和/或,加解密处理。
示例性地,上述步骤201具体还可以包括下述步骤201b至步骤201c。
201b、终端设备对第一命令消息进行CRC校验。
201c、终端设备在该CRC校验成功的情况下,对第一命令消息进行解密处理,得到解密后的第一命令消息。
可以理解,终端设备在通过接收线程从该主机接收第一命令消息之后,可以执行上述步骤201b至步骤201c。
可选地,上述步骤204具体可以通过下述步骤204a至步骤204b实现该将第二回复消息发送至该主机之前,该方法还包括:
204a、终端设备对第二回复消息进行加密处理;
204b、终端设备对加密后的第二回复消息进行CRC处理。
可以理解,终端设备从至少一个回复消息中获取第二回复消息,然后对第二回复消息进行加密处理,并对加密后的第二回复消息进行CRC处理,最后将CRC处理后的第二回复消息发送至主机。
本申请实施例中,具体的CRC校验、CRC处理、解密处理、加密处理过程可以参考现有相关技术,此处不予赘述。
本申请实施例中,通过上述步骤201b至步骤201c,以及步骤204a至步骤204b,在数据传输过程中,每次传输需要进行CRC校验(如果当前CRC校验不通过,则中止后面的传输流程),来保证当前传输的安全性和完成性;每次传输对传输的数据信息进行加解密处理,可以保证传输数据的安全性。
图9为本申请实施例示出的一种终端设备的结构框图,如图9所示,包括:安卓守护程序模块901,该安卓守护程序模块901用于与主机通信,该安卓守护程序模块901包括并行运行的接收线程和处理线程;该安卓守护程序模块901,用于通过该接收线程从该主机接收第一命令消息,并缓存第一命令消息;以及用于通过该处理线程从至少一个命令消息中获取第二命令消息,对第二命令消息进行处理,得到第一回复消息;其中,该至少一个命令消息为通过该接收线程依次缓存且未处理的命令消息。
可选地,第二命令消息满足以下任一项:该至少一个命令消息中接收时间最早的;该至少一个命令消息中处理优先级最高的;该至少一个命令消息中优先级最高的命令消息中接收时间最早的。
可选地,该安卓守护程序模块901还包括:发送线程,该发送线程分别与该接收线程和该处理线程并行运行;该安卓守护程序模块901,还用于在通过该处理线程对第二命令消息进行处理,得到第一回复消息之后,通过该处理线程缓存第一回复消息;以及通过该发送线程从至少一个回复消息中获取第二回复消息,并将第二回复消息发送至该主机;其中,该至少一个回复消息为通过该处理线程缓存且未发送至该主机的回复消息。
可选地,第二回复消息满足以下任一项:该至少一个回复消息中处理时间最早的;该至少一个回复消息中发送优先级最高的;该至少一个回复消息中发送优先级最高的回复消息中处理时间最早的。
可选地,该安卓守护程序模块901,还用于在通过该接收线程从该主机接收命令消息之前,通过该安卓守护程序模块901在该终端设备的通用串行总线USB接口上创建传输接口;其中,该传输接口包括第一端点、第二端点和第三端点;第一端点用于传输该安卓守护程序模块901和该主机之间的控制信息,第二端点用于从该主机接收命令消息,第三端点用于向该主机发送回复消息。
可选地,第二命令消息为定制命令;该安卓守护程序模块901,具体用于通过该安卓守护程序模块901为该处理线程增加该定制命令对应的处理动作;通过该处理线程中的该处理动作对该定制命令进行处理,得到第一回复消息。
可选地,该安卓守护程序模块901包括软件开发工具包SDK接口;该安卓守护程序模块901,还用于在该终端设备中的第三方应用程序接入该SDK接口的情况下,通过该安卓守护程序模块901执行第三方应用程序与该主机之间的命令交互。
可选地,该安卓守护程序模块901,具体用于在该安卓守护程序模块901与该主机握手验证成功的情况下,通过该接收线程从该主机接收第一命令消息。
可选地,该安卓守护程序模块901,还用于在通过接收线程从该主机接收第一命令消息之后,对第一命令消息进行循环冗余校验码CRC校验;在该CRC校验成功的情况下,对第一命令消息进行解密处理,得到解密后的第一命令消息。
可选地,该安卓守护程序模块901,还用于在将第二回复消息发送至该主机之前,对第二回复消息进行加密处理;对加密后的第二回复消息进行CRC处理。
本申请实施例中,各模块可以实现上述方法实施例提供的消息处理方法,且能达到相同的技术效果,为避免重复,这里不再赘述。
图10为实现本申请各个实施例的一种终端设备的硬件结构示意图,如图10所示,该终端设备包括但不限于:射频(radio frequency,RF)电路1001、存储器1002、输入单元1003、显示单元1004、传感器1005、音频电路1006、无线通信(wireless fidelity,WiFi)模块1007、处理器1008、电源1009、以及摄像头1010等部件。其中,射频电路1001包括接收器10011和发送器10012。本领域技术人员可以理解,图10中示出的终端设备结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
RF电路1001可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1008处理;另外,将设计上行的数据发送给基站。通常,RF电路1001包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(low noiseamplifier,LNA)、双工器等。此外,RF电路1001还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(globalsystem of mobile communication,GSM)、通用分组无线服务(general packet radioservice,GPRS)、码分多址(code division multiple access,CDMA)、宽带码分多址(wideband code division multiple access,WCDMA)、长期演进(long term evolution,LTE)、电子邮件、短消息服务(short messaging service,SMS)等。
存储器1002可用于存储软件程序以及模块,处理器1008通过运行存储在存储器1002的软件程序以及模块,从而执行终端设备的各种功能应用以及数据处理。存储器1002可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端设备的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器1002可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元1003可用于接收输入的数字或字符信息,以及产生与终端设备的用户设置以及功能控制有关的键信号输入。具体地,输入单元1003可包括触控面板10031以及其他输入设备10032。触控面板10031,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板10031上或在触控面板10031附近的操作),并根据预先设定的程式驱动相应的连接装置。可选地,触控面板10031可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1008,并能接收处理器1008发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种实现触控面板10031。除了触控面板10031,输入单元1003还可以包括其他输入设备10032。具体地,其他输入设备10032可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1004可用于显示由用户输入的信息或提供给用户的信息以及终端设备的各种菜单。显示单元1004可包括显示面板10041,可选地,可以采用液晶显示器(liquidcrystal display,LCD)、有机发光二极管(organic light-Emitting diode,OLED)等形式来配置显示面板10041。进一步的,触控面板10031可覆盖显示面板10041,当触控面板10031检测到在其上或附近的触摸操作后,传送给处理器1008以确定触摸事件的,随后处理器1008根据触摸事件的在显示面板10041上提供相应的视觉输出。虽然在图10中,触控面板10031与显示面板10041是作为两个独立的部件来实现终端设备的输入和输入功能,但是在某些实施例中,可以将触控面板10031与显示面板10041集成而实现终端设备的输入和输出功能。
终端设备还可包括至少一种传感器1005,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板10041的亮度,接近传感器可在终端设备移动到耳边时,退出显示面板10041和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别终端设备姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于终端设备还可配置的陀螺仪、地磁传感器、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。本申请实施例中,该终端设备可以包括加速度传感器、深度传感器或者距离传感器等。
音频电路1006、扬声器10061,传声器10062可提供用户与终端设备之间的音频接口。音频电路1006可将接收到的音频数据转换后的电信号,传输到扬声器10061,由扬声器10061转换为声音信号输出;另一方面,传声器10062将收集的声音信号转换为电信号,由音频电路1006接收后转换为音频数据,再将音频数据输出处理器1008处理后,经RF电路1001以发送给比如另一终端设备,或者将音频数据输出至存储器1002以便进一步处理。
WiFi属于短距离无线传输技术,终端设备通过WiFi模块1007可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图10示出了WiFi模块1007,但是可以理解的是,其并不属于终端设备的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器1008是终端设备的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器1002内的软件程序和/或模块,以及调用存储在存储器1002内的数据,执行终端设备的各种功能和处理数据,从而对终端设备进行整体监控。可选地,处理器1008可包括一个或多个处理单元;优选的,处理器1008可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1008中。
终端设备还包括给各个部件供电的电源1009(比如电池),优选的,电源可以通过电源管理系统与处理器1008逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。尽管未示出,终端设备还可以包括蓝牙模块等,在此不再赘述。
本申请实施例中,处理器1008包括安卓守护程序模块,安卓守护程序模块与主机通信,且该安卓守护程序模块包括并行运行的接收线程和处理线程,处理器1008,用于通过该接收线程从该主机接收第一命令消息,并缓存第一命令消息;以及用于通过该处理线程从至少一个命令消息中获取第二命令消息,对第二命令消息进行处理,得到第一回复消息;其中,该至少一个命令消息为通过该接收线程依次缓存且未处理的命令消息。
可选地,第二命令消息满足以下任一项:该至少一个命令消息中接收时间最早的;该至少一个命令消息中处理优先级最高的;该至少一个命令消息中优先级最高的命令消息中接收时间最早的。
可选地,该安卓守护程序模块还包括:发送线程,该发送线程分别与该接收线程和该处理线程并行运行;处理器1008,还用于在通过该处理线程对第二命令消息进行处理,得到第一回复消息之后,通过该处理线程缓存第一回复消息;以及通过该发送线程从至少一个回复消息中获取第二回复消息,并将第二回复消息发送至该主机;其中,该至少一个回复消息为通过该处理线程缓存且未发送至该主机的回复消息。
可选地,第二回复消息满足以下任一项:该至少一个回复消息中处理时间最早的;该至少一个回复消息中发送优先级最高的;该至少一个回复消息中发送优先级最高的回复消息中处理时间最早的。
可选地,处理器1008,还用于在通过该接收线程从该主机接收命令消息之前,通过该安卓守护程序模块在该终端设备的通用串行总线USB接口上创建传输接口;其中,该传输接口包括第一端点、第二端点和第三端点;第一端点用于传输该安卓守护程序模块和该主机之间的控制信息,第二端点用于从该主机接收命令消息,第三端点用于向该主机发送回复消息。
可选地,第二命令消息为定制命令;处理器1008,具体用于通过该安卓守护程序模块为该处理线程增加该定制命令对应的处理动作;通过该处理线程中的该处理动作对该定制命令进行处理,得到第一回复消息。
可选地,该安卓守护程序模块包括软件开发工具包SDK接口;处理器1008,还用于在该终端设备中的第三方应用程序接入该SDK接口的情况下,通过该安卓守护程序模块执行第三方应用程序与该主机之间的命令交互。
可选地,处理器1008,具体用于在该安卓守护程序模块与该主机握手验证成功的情况下,通过该接收线程从该主机接收第一命令消息。
可选地,处理器1008,还用于在通过接收线程从该主机接收第一命令消息之后,对第一命令消息进行循环冗余校验码CRC校验;在该CRC校验成功的情况下,对第一命令消息进行解密处理,得到解密后的第一命令消息。
可选地,处理器1008,还用于在将第二回复消息发送至该主机之前,对第二回复消息进行加密处理;对加密后的第二回复消息进行CRC处理。
本实施例中各种实现方式具有的有益效果具体可以参见上述消息处理方法实施例中相应实现方式所具有的有益效果,为避免重复,此处不再赘述。
本申请实施例还提供一种终端设备,该终端设备可以包括:处理器,存储器以及存储在存储器上并可在处理器上运行的程序或指令,该程序或指令被处理器执行时可以实现上述方法实施例提供的消息处理方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例提供一种可读存储介质,该可读存储介质上存储程序或指令,该程序或指令被处理器执行时实现上述方法实施例提供的消息处理方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例还提供一种计算机程序产品,其中,该计算机程序产品包括计算机指令,当该计算机程序产品在处理器上运行时,使得处理器执行该计算机指令,实现上述方法实施例提供的消息处理方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述消息处理方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置,服务器和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (13)
1.一种消息处理方法,其特征在于,应用于通过安卓守护程序模块与主机通信的终端设备,所述安卓守护程序模块包括并行运行的接收线程和处理线程;所述方法包括:
通过所述接收线程从所述主机接收第一命令消息,并缓存所述第一命令消息;
通过所述处理线程从至少一个命令消息中获取第二命令消息,对所述第二命令消息进行处理,得到第一回复消息;
其中,所述至少一个命令消息为通过所述接收线程依次缓存且未处理的命令消息。
2.根据权利要求1所述的方法,其特征在于,所述第二命令消息满足以下任一项:
所述至少一个命令消息中接收时间最早的;
所述至少一个命令消息中处理优先级最高的;
所述至少一个命令消息中优先级最高的命令消息中接收时间最早的。
3.根据权利要求1所述的方法,其特征在于,所述安卓守护程序模块还包括:发送线程,所述发送线程分别与所述接收线程和所述处理线程并行运行;
所述通过所述处理线程对所述第二命令消息进行处理,得到第一回复消息之后,所述方法包括:
通过所述处理线程缓存所述第一回复消息;
所述方法还包括:
通过所述发送线程从至少一个回复消息中获取第二回复消息,并将所述第二回复消息发送至所述主机;
其中,所述至少一个回复消息为通过所述处理线程缓存且未发送至所述主机的回复消息。
4.根据权利要求3所述的方法,其特征在于,所述第二回复消息满足以下任一项:
所述至少一个回复消息中处理时间最早的;
所述至少一个回复消息中发送优先级最高的;
所述至少一个回复消息中发送优先级最高的回复消息中处理时间最早的。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述方法还包括:
在通过所述接收线程从所述主机接收命令消息之前,通过所述安卓守护程序模块在所述终端设备的通用串行总线USB接口上创建传输接口;
其中,所述传输接口包括第一端点、第二端点和第三端点;所述第一端点用于传输所述安卓守护程序模块和所述主机之间的控制信息,所述第二端点用于从所述主机接收命令消息,所述第三端点用于向所述主机发送回复消息。
6.根据权利要求1至4中任一项所述的方法,其特征在于,所述第二命令消息为定制命令;所述对所述第二命令消息进行处理,得到第一回复消息,包括:
通过所述安卓守护程序模块为所述处理线程增加所述定制命令对应的处理动作;
通过所述处理线程中的所述处理动作对所述定制命令进行处理,得到所述第一回复消息。
7.根据权利要求1至4中任一项所述的方法,其特征在于,所述安卓守护程序模块包括软件开发工具包SDK接口;所述方法还包括:
在所述终端设备中的第三方应用程序接入所述SDK接口的情况下,通过所述安卓守护程序模块执行所述第三方应用程序与所述主机之间的命令交互。
8.根据权利要求1至4中任一项所述的方法,其特征在于,所述通过接收线程从所述主机接收第一命令消息,包括:
在所述安卓守护程序模块与所述主机握手验证成功的情况下,通过所述接收线程从所述主机接收所述第一命令消息。
9.根据权利要求1至4中任一项所述的方法,其特征在于,所述通过接收线程从所述主机接收第一命令消息之后,所述方法还包括:
对所述第一命令消息进行循环冗余校验码CRC校验;
在所述CRC校验成功的情况下,对所述第一命令消息进行解密处理,得到解密后的所述第一命令消息。
10.根据权利要求3或4所述的方法,其特征在于,所述将所述第二回复消息发送至所述主机之前,所述方法还包括:
对所述第二回复消息进行加密处理;
对加密后的所述第二回复消息进行CRC处理。
11.一种终端设备,其特征在于,所述终端设备包括安卓守护程序模块,所述安卓守护程序模块用于与主机通信,所述安卓守护程序模块包括并行运行的接收线程和处理线程;
所述安卓守护程序模块,用于通过所述接收线程从所述主机接收第一命令消息,并缓存所述第一命令消息;以及用于通过所述处理线程从至少一个命令消息中获取第二命令消息,对所述第二命令消息进行处理,得到第一回复消息;
其中,所述至少一个命令消息为通过所述接收线程依次缓存且未处理的命令消息。
12.一种终端设备,其特征在于,包括处理器,存储器及存储在所述存储器上并可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1至10中任一项所述的消息处理方法的步骤。
13.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1至10中任一项所述的消息处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110963385.1A CN115934494A (zh) | 2021-08-20 | 2021-08-20 | 消息处理方法、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110963385.1A CN115934494A (zh) | 2021-08-20 | 2021-08-20 | 消息处理方法、终端设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115934494A true CN115934494A (zh) | 2023-04-07 |
Family
ID=86556286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110963385.1A Pending CN115934494A (zh) | 2021-08-20 | 2021-08-20 | 消息处理方法、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115934494A (zh) |
-
2021
- 2021-08-20 CN CN202110963385.1A patent/CN115934494A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12041165B2 (en) | Key updating method, apparatus, and system | |
US10944558B2 (en) | Key storing method, key managing method and apparatus | |
CN106598584B (zh) | 一种处理资源文件的方法、装置和系统 | |
CN111142930B (zh) | 安装包文件打包方法、装置、终端设备及存储介质 | |
US10454905B2 (en) | Method and apparatus for encrypting and decrypting picture, and device | |
CN107103211B (zh) | Sdk发送、应用发布、应用运行方法及装置 | |
CN111078523B (zh) | 日志获取方法、装置、存储介质及电子设备 | |
WO2019148397A1 (zh) | 分解敏感数据存储在不同应用环境中 | |
CN106708554A (zh) | 程序运行方法及装置 | |
CN116541865A (zh) | 基于数据安全的密码输入方法、装置、设备及存储介质 | |
CN111273955B (zh) | 热修复插件优化方法、装置、存储介质及电子设备 | |
CN114629649B (zh) | 基于云计算的数据处理方法、装置及存储介质 | |
CN110413497B (zh) | 异常监控方法、装置、终端设备及计算机可读存储介质 | |
CN106708555B (zh) | 一种加载插件的方法和装置 | |
CN111209031A (zh) | 一种数据获取方法、装置、终端设备及存储介质 | |
CN111078233B (zh) | 一种应用推广的实现方法、装置、设备及存储介质 | |
CN111488600B (zh) | 一种资源处理方法、电子设备和服务器 | |
CN115795519B (zh) | 数据加解密处理方法、装置、电子设备及存储介质 | |
CN113923005B (zh) | 一种写入数据的方法及系统 | |
CN115934494A (zh) | 消息处理方法、终端设备及存储介质 | |
EP3606009B1 (en) | Image synchronization method and device, and server | |
WO2019127468A1 (zh) | 分组应用使用同一密钥共享数据 | |
CN111625278A (zh) | 一种源代码文件的生成方法及相关设备 | |
CN111581223A (zh) | 一种数据更新方法、装置、终端设备及存储介质 | |
CN111090894B (zh) | 一种锁卡数据重建的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |