掌桥专利:专业的专利平台
掌桥专利
首页

一种用于安卓系统的按键响应方法及装置

文献发布时间:2023-06-19 16:03:19



技术领域

本发明涉及按键响应控制技术领域,具体涉及一种用于安卓系统的按键响应方法及装置。

背景技术

在Android(安卓)设备中,按键输入是Android中的一个重要输来源,从按键按下,到linux kernel获取到输入,转到Hal层做按键映射,在framework层完成按键分发,最后在app的view中获取到按键监听,完成整个android中按键的链路。

某些对全链路时延要求比较高的设备,如云游戏类项目,对整个按键时延要求比较高。在云游戏类项目中,从外接手柄到Andrid获取到按键信息,转到云游戏app响应并上传到云服务器,再从云服务器获取到下发的图片信息,然后本地设备完成解码,并通过HDMI或其他设备显示,完成一个整体链路的闭环。在这个闭环中,Android对按键信息的响应速度直接影响了整个链路的时延,对用户的体验起着相当直接的影响,因此对Android内部按键信息的响应处理是关键环节。

发明内容

因此,本发明要解决的技术问题在于克服现有技术Android系统中,所有按键均在框架层中进行分发导致链路时延较长、按键响应速度慢的问题,从而提供一种用于安卓系统的按键响应方法及装置。

为解决上述技术问题,本发明公开实施例至少提供一种用于安卓系统的按键响应方法及装置。

第一方面,本发明公开实施例提供了一种用于安卓系统的按键响应方法,所述方法应用于Linux实时操作系统,所述Linux实时操作系统预设至少两个自定义设备节点,所述方法包括:

接收应用程序通过内部SO的方式直接发送来的指定按键信息;

通过所述自定义设备节点将所述指定按键信息传递给Linux内核驱动;

接收所述应用程序通过内部SO的方式直接发送来的待响应按键信息;

所述Linux内核驱动获取所述待响应按键信息;

根据所述按键信息判断所述待响应按键是否为指定按键;

若所述待响应按键不是所述指定按键,则将所述待响应按键在框架中分发给应用程序,由所述应用程序进行按键响应;

若所述待响应按键是所述指定按键,则通过Android接口定义语言回调返回所述应用程序,由所述应用程序进行按键响应。

可选地,所述Linux内核驱动获取所述待响应按键信息为:所述Linux内核驱动轮询各个设备节点获取所述待响应按键信息。

可选地,所述方法还包括:接收所述待响应按键的编码数据;向终端设备发送所述编码数据,以便所述终端设备解码并对所述待响应按键进行响应操作。

可选地,所述指定按键包括:游戏手柄上的上、下、左、右、A、X和B中的一个或多个按键。

可选地,所述Linux内核驱动获取所述待响应按键信息后,将所述待响应按键的关键字写入所述自定义设备节点,所述通过Android接口定义语言回调返回所述应用程序为:通过Android接口定义语言将所述待响应按键的关键字回调返回所述应用程序。

可选地,所述按键为红外感应按键、手柄按键或触摸屏按键。

可选地,所述方法应用于云游戏操作,所述应用程序进行按键响应为:所述应用程序将所述按键信息上传至云服务器。

第二方面,本发明公开实施例还提供一种用于安卓系统的按键响应装置,所述装置应用于Linux实时操作系统,所述Linux实时操作系统预设至少两个自定义设备节点,所述装置包括:

指定按键信息接收模块,用于接收应用程序通过内部SO的方式直接发送来的指定按键信息;

Linux内核传递模块,用于通过所述自定义设备节点将所述指定按键信息传递给Linux内核驱动;

待响应按键信息接收模块,用于接收所述应用程序通过内部SO的方式直接发送来的待响应按键信息;

待响应按键信息获取模块,所述Linux内核驱动获取所述待响应按键信息;

判断模块,用于根据所述按键信息判断所述待响应按键是否为指定按键;

框架分发模块,用于若所述待响应按键不是所述指定按键,则将所述待响应按键在框架中分发给应用程序,由所述应用程序进行按键响应;

轮询模块,用于若所述待响应按键是所述指定按键,则轮询设备节点,通过Android接口定义语言回调返回所述应用程序,由所述应用程序进行按键响应。

第三方面,本发明公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

第四方面,本发明公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。

本发明的实施例提供的技术方案可以具有以下有益效果:

在Android系统中,针对手柄上的特定按键取消在framework中的分发环节,直接使用linux设备节点读取的方式,通过aidl返回给app,以取消在framework中的耗时,节省链路时延。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明公开实施例所提供的一种用于安卓系统的按键响应方法的流程图;

图2、图3示出了本发明公开实施例所提供的另一种用于安卓系统的按键响应方法的流程图;

图4示出了本发明公开实施例中应用程序和Linux实时操作系统之间信息交互示意图;

图5示出了本发明公开实施例应用程序功能实现结构示意图;

图6示出了本发明公开实施例所提供的一种用于安卓系统的按键响应装置的结构示意图;

图7示出了本发明公开实施例所提供的一种计算机设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

实施例1

如图1所示,本发明公开实施例所提供的一种用于安卓系统的按键响应方法的流程图,该方法应用于Linux实时操作系统,其中,Linux实时操作系统预设至少两个自定义设备节点,该方法包括:

S11:接收应用程序通过内部SO的方式直接发送来的指定按键信息;

S12:通过自定义设备节点将指定按键信息传递给Linux内核驱动;

S13:接收应用程序通过内部SO的方式直接发送来的待响应按键信息;

S14:Linux内核驱动获取待响应按键信息;

S15:根据按键信息判断待响应按键是否为指定按键,若待响应按键是指定按键,则执行步骤S17,若待响应按键不是指定按键,则执行步骤S16;

S16:将待响应按键在框架中分发给应用程序,由应用程序进行按键响应;

S17:轮询设备节点,通过Android接口定义语言回调返回应用程序,由应用程序进行按键响应。

可以理解的是,本实施例提供的技术方案,在Android系统中,针对手柄上的特定按键取消在framework中的分发环节,直接使用linux设备节点读取的方式,通过aidl返回给app,以取消在framework中的耗时,节省链路时延,在实现过程中,通过APP应用层设置特定的按键信息给到Kernel(Linux内核),Linux内核的驱动通过读取到按键值写到设备节点,按键传递模块将设备节点的Key值送给app;在当前Android结构中,优化按键流程与逻辑。

实施例2

如图2所示,本发明公开实施例所提供的另一种用于安卓系统的按键响应方法的流程图,所述方法包括:

该方法应用于Linux实时操作系统,其中,Linux实时操作系统预设至少两个自定义设备节点,该方法包括:

S21:接收应用程序通过内部SO(动态库)的方式直接发送来的指定按键信息;

S22:通过自定义设备节点将指定按键信息传递给Linux内核驱动;

S23:接收应用程序通过内部SO的方式直接发送来的待响应按键信息;

S24:Linux内核驱动获取待响应按键信息;

S25:根据按键信息判断待响应按键是否为指定按键,若待响应按键是指定按键,则执行步骤S27,若待响应按键不是指定按键,则执行步骤S26;

S26:将待响应按键在框架中分发给应用程序,由应用程序进行按键响应;

S27:通过Android接口定义语言回调返回应用程序,由应用程序进行按键响应;

S28:接收待响应按键的编码数据;

S29:向终端设备发送编码数据,以便终端设备解码并对待响应按键进行响应操作。

在具体实践中,Linux内核驱动获取所述待响应按键信息为:所述Linux内核驱动轮询各个设备节点获取所述待响应按键信息。

在具体实践中,指定按键包括:游戏手柄上的上、下、左、右、A、X和B中的一个或多个按键。

在具体实践中,Linux内核驱动获取所述待响应按键信息后,将所述待响应按键的关键字写入所述自定义设备节点,所述通过Android接口定义语言回调返回所述应用程序为:通过Android接口定义语言将所述待响应按键的关键字回调返回所述应用程序。

在具体实践中,按键为红外感应按键、手柄按键或触摸屏按键。

在具体实践中,上述方法应用于云游戏操作,应用程序进行按键响应为:应用程序将按键信息上传至云服务器。

为了便于读者理解,下面对云游戏链路阶段进行详细描述:

1,按键按下,正常用户操作阶段;

2,Android终端设备,如机顶盒等Android设备获取到按键信息,准备分发给应用层第三方云游戏app;

3,云游戏App收到按键信息后上传云服务器;

4,云游戏服务器收到终端设备指令后,在云游戏服务器上生成一帧图像数据并进行编码;

6,云游戏服务器下发编码数据到STB(机顶盒);

7,终端设备解码;

8,终端设备通过HDMI(High Definition Multimedia Interface,高清多媒体接口)或其他物理链路显示到显示屏。

在未优化按键输入的链路中,整体时延在120ms左右,通过本发明实施例提供的用于安卓系统的按键响应方法和装置,可极大优化按键时延;经试验证实,优化后的数据大概在80-90ms之间。

如图3所示,直接通过软件层面优化按键输入步骤,在云游戏项目中能优化20-30ms。

需要说明的是,如图4所示,本发明实施例中,需要调整linux input驱动架构,需要自定义添加设备节点,如/proc/input/keyset,/proc/input/keys/read;/proc/input/keyset等用来将自定义按键信息从应用层传递给linux内核驱动,将不属于自定义按键信息范围的键值正常通过android输入流程传递给应用层,将属于自定义按键信息范围内的键值重定向到/proc/input/keys/read;按键信息读取模块通过主动轮询后,将数据传递给app应用层。

如图5所示,App应用层(A部分)与按键信息读取模块(B部分)之间的交互用Android C/S架构来处理,即基于Binder机制的AIDL(Android Interface DefinitionLanguage,Android接口定义语言),A部分作为Server(服务器),B部分作为Client(客户端);当B部分读取到按键信息时,通过aidl调用A部分的接口实现即时通信;完成一次信息传输的完整流程,其中,Binder机制的核心就是利用内核空间和用户空间的共享数据的原理来实现进程间通信。

可以理解的是,本实施例提供的技术方案,在Android系统中,在云游戏操作过程中,针对手柄上的特定按键取消在framework中的分发环节,直接使用linux设备节点读取的方式,通过aidl返回给app,以取消在framework中的耗时,节省链路时延,在实现过程中,通过APP应用层设置特定的按键信息给到Kernel,Linux内核的驱动通过读取到按键值写到设备节点,按键传递模块将设备节点的Key值送给app;在当前Android结构中,优化按键流程与逻辑。

实施例3

如图6所示,本发明实施例还提供一种用于安卓系统的按键响应装置,该装置应用于Linux实时操作系统,其中,Linux实时操作系统预设至少两个自定义设备节点,该装置包括:

指定按键信息接收模块61,用于接收应用程序通过内部SO的方式直接发送来的指定按键信息;

Linux内核传递模块62,用于通过自定义设备节点将指定按键信息传递给Linux内核驱动;

待响应按键信息接收模块63,用于接收应用程序通过内部SO的方式直接发送来的待响应按键信息;

待响应按键信息获取模块64,Linux内核驱动获取待响应按键信息;

判断模块65,用于根据按键信息判断待响应按键是否为指定按键;

框架分发模块66,用于若待响应按键不是指定按键,则将待响应按键在框架中分发给应用程序,由应用程序进行按键响应;

轮询模块67,用于若待响应按键是指定按键,则通过Android接口定义语言回调返回应用程序,由应用程序进行按键响应。

在具体实践中,如图6中虚线部分所示,上述装置还包括:

编码数据接收模块68,用于接收待响应按键的编码数据;

编码数据发送模块69,用于向终端设备发送编码数据,以便终端设备解码并对待响应按键进行响应操作。

在具体实践中,Linux内核驱动获取待响应按键信息为:Linux内核驱动轮询各个设备节点获取待响应按键信息。

在具体实践中,指定按键包括:游戏手柄上的上、下、左、右、A、X和B中的一个或多个按键。

在具体实践中,Linux内核驱动获取待响应按键信息后,将待响应按键的关键字写入自定义设备节点,轮询模块47通过Android接口定义语言回调返回应用程序为:轮询模块47通过Android接口定义语言将待响应按键的关键字回调返回应用程序。

在具体实践中,按键为红外感应按键、手柄按键或触摸屏按键。

在具体实践中,上述装置应用于云游戏操作,应用程序进行按键响应为:应用程序将按键信息上传至云服务器。

可以理解的是,本实施例提供的技术方案,在Android系统中,针对手柄上的特定按键取消在framework中的分发环节,直接使用linux设备节点读取的方式,通过aidl返回给app,以取消在framework中的耗时,节省链路时延,在实现过程中,通过APP应用层设置特定的按键信息给到Kernel,Linux内核的驱动通过读取到按键值写到设备节点,按键传递模块将设备节点的Key值送给app;在当前Android结构中,优化按键流程与逻辑。

实施例4

基于同一技术构思,本申请实施例还提供了一种计算机设备,包括存储器1和处理器2,如图7所示,所述存储器1存储有计算机程序,所述处理器2执行所述计算机程序时实现上述任一项所述的用于安卓系统的按键响应方法。

其中,存储器1至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器1在一些实施例中可以是OTT视频业务监控系统的内部存储单元,例如硬盘。存储器1在另一些实施例中也可以是OTT视频业务监控系统的外部存储设备,例如插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,存储器1还可以既包括OTT视频业务监控系统的内部存储单元也包括外部存储设备。存储器1不仅可以用于存储安装于OTT视频业务监控系统的应用软件及各类数据,例如OTT视频业务监控程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器2在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器1中存储的程序代码或处理数据,例如执行OTT视频业务监控程序等。

可以理解的是,本实施例提供的技术方案,在Android系统中,针对手柄上的特定按键取消在framework中的分发环节,直接使用linux设备节点读取的方式,通过aidl返回给app,以取消在framework中的耗时,节省链路时延,在实现过程中,通过APP应用层设置特定的按键信息给到Kernel,Linux内核的驱动通过读取到按键值写到设备节点,按键传递模块将设备节点的Key值送给app;在当前Android结构中,优化按键流程与逻辑。

本发明公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的用于安卓系统的按键响应方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

本发明公开实施例所提供的用于安卓系统的按键响应方法的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行上述方法实施例中所述的用于安卓系统的按键响应方法的步骤,具体可参见上述方法实施例,在此不再赘述。

本发明公开实施例还提供一种计算机程序,该计算机程序被处理器执行时实现前述实施例的任意一种方法。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software DevelopmentKit,SDK)等等。

可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。

需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

技术分类

06120114688187