CN107092484B - 将C语言层的功能按键信息上报至Java层的方法及系统 - Google Patents
将C语言层的功能按键信息上报至Java层的方法及系统 Download PDFInfo
- Publication number
- CN107092484B CN107092484B CN201710189221.1A CN201710189221A CN107092484B CN 107092484 B CN107092484 B CN 107092484B CN 201710189221 A CN201710189221 A CN 201710189221A CN 107092484 B CN107092484 B CN 107092484B
- Authority
- CN
- China
- Prior art keywords
- function key
- key information
- layer
- interface
- message receiving
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
- G06F9/4491—Optimising based on receiver type
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种将C语言层的功能按键信息上报至Java层的方法及系统,涉及软件开发的功能按键触发检测领域。该方法的步骤为:C语言层将功能按键信息上报至Java层;在Java层中创建消息接收类的接口集合、以及消息接收类注册接口,通过消息接收类注册接口,将所有消息接收类的接口注册至接口集合;Java层收到C语言层上报的功能按键消息之后,循环遍历接口集合中的所有接口,依次将功能按键消息分发至所有遍历得到的接口;遍历得到的接口将功能按键消息发送至消息接收类。本发明能够自动将C语言层的功能按键信息上报至Java层、并进行分发,进而显著提高了功能按键信息的传输效率和Java层开发人员的开发效率。
Description
技术领域
本发明涉及软件开发的功能按键触发检测领域,具体涉及一种将C语言层的功能按键信息上报至Java(门面向对象编程语言)层的方法及系统。
背景技术
在功能按键触发检测领域中,一些功能按键的触发事件从C语言层发出,但在Java层进行检测(例如Android系统中的功能按键)。因此,为了对功能按键进行触发检测,需要将C语言层的功能按键触发事件传输至Java层,经过Java层的一系列处理后暴露出来的是一个简单易用的按键监听函数,进而方便Java层的开发人员方便快捷的检测系统按键的输入信息。
现有的将C语言层的功能按键触发事件传输至Java层的方法一般为:Java层主动读取C语言层的功能按键触发事件后,隶属于消息接收类(需要接收功能按键信息的类)的Java层开发人员,将功能按键触发事件分发至对应的消息接收类。
但是,上述将C语言层的功能按键触发事件传输至Java层的方法使用时,存在以下缺陷:
(1)Java层主动读取C语言层的功能按键触发事件的耗时较长,进而会降低整个传输过程的工作效率。
(2)将功能按键触发事件分发至对应的消息接收类时,隶属于不同消息接收类的研发人员会进行接触,进而使得功能按键消息分发时存在一定的安全隐患。
发明内容
针对现有技术中存在的缺陷,本发明解决的技术问题为:如何自动将C语言层的功能按键信息上报至Java层、并进行分发。
为达到以上目的,本发明提供的将C语言层的功能按键信息上报至Java层的方法,包括以下步骤:
步骤一、C语言层将功能按键信息形成字符串数组后,上报至Java层,转到步骤二;
步骤二、Java层收到C语言层上报的功能按键消息之后,循环遍历接口集合中的所有接口,依次将功能按键消息分发至所有遍历得到的接口,转到步骤三;
步骤三、所述遍历得到的接口将功能按键消息发送至消息接收类;
步骤二之前,还包括以下步骤:
在Java层中创建消息接收类的接口集合、以及消息接收类注册接口,通过消息接收类注册接口,将所有消息接收类的接口注册至接口集合。
本发明提供的将C语言层的功能按键信息上报至Java层的系统,包括设置于C语言层的功能按键信息上报模块、以及设置于Java层的功能按键信息分发模块和消息接收类接口注册模块;
功能按键信息上报模块用于:将功能按键信息形成字符串数组后,上报至功能按键信息分发模块;
功能按键信息分发模块用于:收到功能按键消息之后,在消息接收类接口注册模块创建的接口集合中,循环遍历所有接口,依次将功能按键消息分发至所有遍历得到的接口;
消息接收类接口注册模块用于:在功能按键信息分发模块之前,创建消息接收类的接口集合、以及消息接收类注册接口,通过消息接收类注册接口,将所有消息接收类的接口注册至接口集合。
与现有技术相比,本发明的优点在于:
(1)参见本发明的步骤一可知,本发明将功能按键信息从C语言层传输至Java层时,并没有直接同现有技术中Java层主动读取功能按键信息一样,而是通过C语言层主动上报功能按键信息,进而提高了功能按键信息传输的工作效率。
与此同时,参见本发明的步骤二和步骤三可知,本发明能够自动对C语言层上报的功能按键消息进行统一的分发处理,避免了现有技术中不同类型的Java层开发人员之间的联系,不仅起到了良好的桥接作用,保证了功能按键消息的安全,而且显著提高了工作效率。
(2)本发明功能按键信息通过JNI通信接口上报至Java层,因此功能按键消息上报至Java层后,能够与Java层自动适配,不需要Java层开发人员去了解C语言层,显著提高了Java层开发人员的开发效率。
(3)本发明通过赋值函数sprintf将功能按键信息形成字符串数组,进而便于Java层对功能按键信息的读取。
(4)本发明为了便于操作人员了解程序的执行状况,会在将功能按键信息发送至Java层的过程中,展示功能按键信息的上报状态,进而提升了用户体验。
附图说明
图1为本发明实施例中将C语言层的功能按键信息上报至Java层的方法。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例中的将C语言层的功能按键信息上报至Java层的方法,包括以下步骤:
S1:通过C语言通用的read函数,监听C语言层的功能按键信息,当功能按键信息为功能按键被触发时,读取功能按键信息,转到S2。
S1将功能按键信息发送至Java层的过程中,为了便于操作人员了解程序的执行状况,通过调用printf("start to send to java")展示功能按键信息的上报状态,C语言层已开始执行上报至JAVA层的功能按键信息。
S2:将功能按键信息形成字符串数组char[buff]中,具体通过赋值函数sprintf(sprintf函数主要的功能是对字符串进行格式化或者对字符串进行拼接赋值)实现:sprintf(buff,"%s",“KEY_DOWN”),转到S3。
S3:将字符串数组上报至Java层的Java空间,具体实现方式为:调用函数return(*env)->NewStringUTF(env,buff),buff为上报的字符串数组,转到S4。
通过S1至S3可知,本实施例将功能按键信息从C语言层传输至Java层时,并没有直接通过Java层主动读取功能按键信息,而是通过C语言层主动上报功能按键信息,不仅提高了功能按键信息传输的工作效率,而且本实施例通过赋值函数sprintf将功能按键信息形成字符串数组,进而便于Java层对功能按键信息的读取。
S4:为了使得Java层能够接收功能按键信息并进行有效的分发,需要在Java层中创建按键处理类KeyManager,在按键处理类中,创建消息接收类(需要接收功能按键信息的类)的接口集合。在按键处理类中创建消息接收类注册接口,通过消息接收类注册接口,将所有消息接收类的接口注册至接口集合,转到S5。
S4中创建消息接收类接口集合的实现方式为:List<IKey>listIkeys=newArrayList<IKey>(),listIkeys即为接口集合;
S4中通过消息接收类注册接口,将所有消息接收类的接口注册至接口集合时,通过regeisterKeyListener(IKey keyListener)函数来实现,具体为:将keyListener对象(即消息接收类)通过listIkeys中的add(keyListener)方法,添加至listIkeys中。以此达到只要是注册过的类都会将接口添加到listIkeys中,而后续新增的消息接收类的接口也会在listIkeys中进行注册。
实际应用中S4的执行时序在S5之间即可,例如可以在执行S1至S3的过程中、或者S1之前。
S5:Java层收到C语言层上报的功能按键消息之后,通过for循环的方式遍历接口集合中的所有接口,依次将功能按键消息回调至所有遍历得到的接口,进而使得功能按键消息能够通过遍历得到的接口,发送至消息接收类。
S5中通过for循环的方式遍历接口集合中的所有接口的实现方式为:for(int i=0;i<listIkeys.size();i++);
S5中依次将功能按键消息回调至所有遍历得到的接口的实现方式为:设计一个消息分发接口:public interface IKey{public void onKeyPressed();},其中onKeyPressed为回调函数,通过onKeyPressed依次将功能按键消息回调至所有遍历得到的接口。
参加S4和S5可知,本实施例能够自动对C语言层上报的功能按键消息进行统一的分发处理,避免了不同类型的Java层开发人员之间的联系,不仅起到了良好的桥接作用,保证了功能按键消息的安全,而且显著提高了工作效率。
实际应用中执行S3的过程时,可通过自行设定的JNI(Java Native Interface,用于提供若干的API来实现Java和其他语言、主要是C语言的通信)通信接口来完成,以此实现C语言层和JAVA语言层的良好通信,本实施例的JNI通信接口的设计方式为:
JNIEXPORT jstring JNICALL Java_com_douyu_keyReport(JNIEnv*env,jclasscls){};
上述设计中:
JNIEXPORT为一个JNI函数,JNICALL表示该函数被导出后能够被JAVA层调用;
Jstring为上报值,后续C语言层函数执行完成之后将上报一个string类型的变量;
Java_com_douyu_keyReport为函数名称;
JNIEnv*env,jclass cls均为JNI通信中必须携带的参数,evn代表虚拟机上下文,cls代表Java层中对应的class对象。
在此基础上,根据JNI技术协议规定,S4中的Java层若要获取到JNI通信接口上报的功能按键信息,需要在JAVA层中实现keyReport函数,keyReport函数与上述函数名称中Java_com_douyu_keyReport的最后一个字符串对应。
在C语言层通过JNI通信接口上报的功能按键消息,能够与Java层自动适配,不需要Java层开发人员去了解C语言层,显著提高了Java层开发人员的开发效率。
本发明实施例中的将C语言层的功能按键信息上报至Java层的系统,包括设置于C语言层的功能按键信息监听模块和功能按键信息上报模块,还包括设置于Java层的功能按键信息分发模块和消息接收类接口注册模块;
功能按键信息监听模块用于:监听功能按键信息,当功能按键信息为功能按键被触发时,将该功能按键信息后发送至功能按键信息上报模块,展示功能按键信息的上报状态。
功能按键信息上报模块用于:通过赋值函数sprintf,将功能按键信息形成字符串数组后;通过JNI通信接口,将功能按键信息上报至功能按键信息分发模块。
功能按键信息分发模块用于:收到功能按键消息之后,在消息接收类接口注册模块创建的接口集合中,循环遍历所有接口,依次将功能按键消息分发至所有遍历得到的接口。
消息接收类接口注册模块用于:在功能按键信息分发模块工作之前,创建消息接收类的接口集合、以及消息接收类注册接口,通过消息接收类注册接口,将所有消息接收类的接口注册至接口集合。
至此,参见本发明实施例可知,本发明能够自动将功能按键信息从C语言层上报至Java层、并进行分发,显著提高了Java层开发人员的开发效率。
进一步,本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (6)
1.一种将C语言层的功能按键信息上报至Java层的方法,其特征在于,该方法包括以下步骤:
步骤一、C语言层通过赋值函数sprintf将功能按键信息形成字符串数组后,通过JNI通信接口将所述功能按键信息上报至Java层,转到步骤二;
步骤二、Java层收到C语言层上报的功能按键消息之后,循环遍历接口集合中的所有接口,依次将功能按键消息分发至所有遍历得到的接口,转到步骤三;
步骤三、所述遍历得到的接口将功能按键消息发送至消息接收类;
步骤二之前,还包括以下步骤:
在Java层中创建消息接收类的接口集合、以及消息接收类注册接口,通过消息接收类注册接口,将所有消息接收类的接口注册至接口集合。
2.如权利要求1所述的将C语言层的功能按键信息上报至Java层的方法,其特征在于:步骤一之后还包括以下步骤:展示功能按键信息的上报状态。
3.如权利要求1或2所述的将C语言层的功能按键信息上报至Java层的方法,其特征在于:步骤一之前还包括以下步骤:监听C语言层的功能按键信息,当功能按键信息为功能按键被触发时,读取功能按键信息,转到步骤一。
4.一种将C语言层的功能按键信息上报至Java层的系统,其特征在于:该系统包括设置于C语言层的功能按键信息上报模块、以及设置于Java层的功能按键信息分发模块和消息接收类接口注册模块;
功能按键信息上报模块用于:通过赋值函数sprintf将功能按键信息形成字符串数组后,通过JNI通信接口将功能按键信息上报至Java层的功能按键信息分发模块;
功能按键信息分发模块用于:收到功能按键消息之后,在消息接收类接口注册模块创建的接口集合中,循环遍历所有接口,依次将功能按键消息分发至所有遍历得到的接口;
消息接收类接口注册模块用于:在功能按键信息分发模块工作之前,创建消息接收类的接口集合、以及消息接收类注册接口,通过消息接收类注册接口,将所有消息接收类的接口注册至接口集合。
5.如权利要求4所述的将C语言层的功能按键信息上报至Java层的系统,其特征在于:所述功能按键信息上报模块将功能按键信息上报至功能按键信息分发模块之后,还用于:展示功能按键信息的上报状态。
6.如权利要求4或5所述的将C语言层的功能按键信息上报至Java层的系统,其特征在于:该系统还包括设置于C语言层的功能按键信息监听模块,其用于:监听功能按键信息,当功能按键信息为功能按键被触发时,将该功能按键信息后发送至功能按键信息上报模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710189221.1A CN107092484B (zh) | 2017-03-27 | 2017-03-27 | 将C语言层的功能按键信息上报至Java层的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710189221.1A CN107092484B (zh) | 2017-03-27 | 2017-03-27 | 将C语言层的功能按键信息上报至Java层的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107092484A CN107092484A (zh) | 2017-08-25 |
CN107092484B true CN107092484B (zh) | 2020-10-16 |
Family
ID=59646361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710189221.1A Active CN107092484B (zh) | 2017-03-27 | 2017-03-27 | 将C语言层的功能按键信息上报至Java层的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107092484B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577540B (zh) * | 2017-08-31 | 2020-03-17 | 武汉斗鱼网络科技有限公司 | 视频交友中实现举报功能的方法、存储介质、设备及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553631A (zh) * | 2003-05-26 | 2004-12-08 | 华为技术有限公司 | 一种接口状态信息的上报方法 |
CN101754149A (zh) * | 2009-11-17 | 2010-06-23 | 华为终端有限公司 | 输入长串数字的方法及移动终端 |
WO2015012782A1 (en) * | 2009-12-16 | 2015-01-29 | Robert Kulakowski | Dynamic obfuscation processing |
CN104503819A (zh) * | 2015-01-05 | 2015-04-08 | 中国科学院计算技术研究所 | 一种面向异os的汇编器及汇编移植方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7490320B2 (en) * | 2005-02-18 | 2009-02-10 | International Business Machines Corporation | Method and apparatus for transforming Java Native Interface function calls into simpler operations during just-in-time compilation |
CN105279033B (zh) * | 2014-07-22 | 2019-04-16 | Tcl集团股份有限公司 | Android平台下C++和Java通信的方法及系统 |
CN104378682A (zh) * | 2014-11-14 | 2015-02-25 | 乐视致新电子科技(天津)有限公司 | 一种基于安卓系统的按键统计方法和智能电视 |
CN104391707B (zh) * | 2014-12-05 | 2018-01-30 | 上海斐讯数据通信技术有限公司 | 一种应用程序的启动方法及启动装置 |
CN105743721B (zh) * | 2014-12-09 | 2019-02-15 | 博雅网络游戏开发(深圳)有限公司 | 数据上报方法、对上报数据进行处理的方法和装置 |
CN106060617B (zh) * | 2016-06-17 | 2020-06-19 | Tcl科技集团股份有限公司 | 一种按键功能配置方法及系统 |
CN106502747A (zh) * | 2016-11-02 | 2017-03-15 | 武汉斗鱼网络科技有限公司 | 一种应用升级的方法及移动终端 |
-
2017
- 2017-03-27 CN CN201710189221.1A patent/CN107092484B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1553631A (zh) * | 2003-05-26 | 2004-12-08 | 华为技术有限公司 | 一种接口状态信息的上报方法 |
CN101754149A (zh) * | 2009-11-17 | 2010-06-23 | 华为终端有限公司 | 输入长串数字的方法及移动终端 |
WO2015012782A1 (en) * | 2009-12-16 | 2015-01-29 | Robert Kulakowski | Dynamic obfuscation processing |
CN104503819A (zh) * | 2015-01-05 | 2015-04-08 | 中国科学院计算技术研究所 | 一种面向异os的汇编器及汇编移植方法 |
Non-Patent Citations (2)
Title |
---|
A native Android application development based on watercolor stylized image;Bo Liang ET AL;《2015 6th IEEE International Conference on Software Engineering and Service Science (ICSESS)》;20151130;全文 * |
Android终端安全机制分析及安全防护技术研究;杨天泉;《中国优秀硕士学位论文全文数据库》;20160315;第2016年卷(第3期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107092484A (zh) | 2017-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107979508B (zh) | 微服务测试方法及装置 | |
EP3382534A1 (en) | Page jumping method and apparatus | |
CN106294102B (zh) | 应用程序的测试方法、客户端、服务器及系统 | |
CN110058860A (zh) | 一种代码自动交付方法、装置、设备及计算机存储介质 | |
CN110515679B (zh) | 数据采集方法、装置、设备及存储介质 | |
CN110442502B (zh) | 一种埋点的方法、装置、设备及存储介质 | |
CN104102578B (zh) | 测试方法及系统、操作端 | |
CN111880987A (zh) | 应用程序的动态监测方法、装置、存储介质以及电子装置 | |
CN111258680B (zh) | 资源加载方法和装置、存储介质及电子装置 | |
CN112559348B (zh) | 基于jacoco的测试分析方法、系统、设备以及介质 | |
WO2013073762A1 (en) | Method and apparatus for providing and collecting data about abnormal termination of program | |
CN107092484B (zh) | 将C语言层的功能按键信息上报至Java层的方法及系统 | |
US10025646B2 (en) | Naming of nodes in NET framework | |
CN113360379B (zh) | 程序测试环境创建方法和程序测试环境创建装置 | |
CN111884823A (zh) | 任务提示方法和装置、存储介质及电子装置 | |
US10073689B2 (en) | Managing application lifecycles within a federation of distributed software applications | |
CN112115041A (zh) | 应用程序的动态埋点方法、装置、存储介质及计算机设备 | |
CN115934199A (zh) | 服务性能监控工具、方法、设备及介质 | |
US6308226B1 (en) | Communication method and system for objects movable in network | |
CN112463140B (zh) | 基于电子积木的编程方法、装置、电子设备及存储介质 | |
KR20130020135A (ko) | 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법 | |
CN111797016B (zh) | 应用程序的测试方法、设备、存储介质及装置 | |
CN114625253A (zh) | 交互方法、装置及存储介质 | |
US10977146B2 (en) | Application operation monitoring apparatus and application operation monitoring method | |
CN113051088A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230524 Address after: No. A910, 9th Floor, Building A, Three Gorges Mall, No. 52 Jiefang Road, Xiling District, Yichang City, Hubei Province, 443000 Patentee after: Hubei Yuancun Technology Co.,Ltd. Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. |