本发明专利技术公开一种Android平台下C++和Java通信的方法及系统,该方法为:A、C++和Java其中一方作为发送方利用其消息管理类发出消息后,通过Java本地接口转换消息的格式并将转换后的消息进行转发;B、C++和Java中另外一方作为接收方利用其消息监听器接口获取该消息,并通过其消息管理类查找实际接收对象,之后将消息发送给查找到的实际接收对象;C、接收方的消息管理类将实际接收对象的返回值通过Java本地接口转换类型后返回至发送方。通过本发明专利技术方法省却了建立Jni通信的繁琐过程,为开发者提供了一套简单实用的C++和Java通信接口,降低了涉及C++和Java通信的程序的开发难度。
【技术实现步骤摘要】
本专利技术涉及通信
,尤其涉及一种Android平台下C++和Java通信的方法及系统。
技术介绍
Android平台下程序的开发大体分为native和Java两部分,其中native部分可以使用C/C++等语言编写程序。有一些程序需要同时用到这两部分。这是就需要两部分间具有通信能力,Android平台提供了一种Java本地调用的方法,即Jni (Java NativeInterface)。Jni的出现虽然满足了 native和Java通信的可能,但由此实现的通信过程却十分繁琐,调试也十分笨拙,从而导致此部分的开发工作量成倍增加。因此,现有技术还有待于改进和发展。
技术实现思路
鉴于上述现有技术的不足,本专利技术的目的在于提供一种Android平台下C++和Java通信的方法及系统,旨在解决目前问题。本专利技术的技术方案如下: 一种Android平台下C++和Java通信的方法,其中,所述方法为: A、C++和Java中的其中一方作为发送方并利用发送方预先创建的消息管理类发出消息后,通过预先创建的Java本地接口转换消息的格式并将转换后的消息进行转发; B、C++和Java中的另外一方作为接收方并利用接收方预先创建消息监听器接口获取该消息,并通过接收方的消息管理类查找该消息的实际接收对象,之后将消息发送给查找到的实际接收对象; C、接收方的消息管理类将实际接收对象对消息的处理结果通过Java本地接口转换类型后返回至发送方。所述的Android平台下C++和Java通信的方法,其中,所述步骤A之前还包括:分别预先创建C++和Java两部分的消息监听器接口和消息管理类,以及创建用于消息转发的Java本地接口。所述的Android平台下C++和Java通信的方法,其中,所述C++和Java的消息管理类中均设置有一包括本部分所有注册的消息接收对象的集合;所述Java本地接口中包含用于转换C++发送到Java消息格式的中介函数和用于转换Java发送到C++消息格式的中介函数。所述的Android平台下C++和Java通信的方法,其中,在创建的所述Java部分的消息管理类中,所有类为静态类,所有函数为静态函数。所述的Android平台下C++和Java通信的方法,其中,所述C++和Java之间传送的消息所包含的消息接收对象名称参数中带有用于对方识别的特定字段。所述的Android平台下C++和Java通信的方法,其中,所述步骤A包括: Al、C++和Java中的发送方的消息管理类通过消息监听器接口收到实际发送对象发送来的消息并获取消息接收对象名称参数,利用所获取的消息接收对象名称参数在发送方消息管理类集合中查找该消息的实际接收对象,若未查找到,则进一步检索该消息接收对象名称参数中是否带有对应接收方的特定字段,若检测到该特定字段,则将该消息发送至Java本地接口 ; A2、Java本地接口接收发送方发送的消息后,调用相应的中介函数对消息进行转换封装形成发送方的消息格式。所述的Android平台下C++和Java通信的方法,其中,当发送方利用所获取的消息接收对象名称参数在发送方的消息管理类集合中查找到该消息的实际接收对象时,则将该消息通过消息监听器接口发送给检索到的实际接收对象,并在之后将该实际接收对象对消息的处理结果作为返回值返回到实际发送对象。所述的Android平台下C++和Java通信的方法,其中,所述步骤B包括: B1、C++和Java其中的接收方通过其消息监听器接口接收Java本地接口发送的消息并获取该消息的消息接收对象名称参数; B2、利用所获取的消息接收对象名称参数在接收方的消息管理类集合中查找该消息的实际接收对象,将消息发送给所查找到实际接收对象。所述的Android平台下C++和Java通信的方法,其中,所述步骤C具体为: C1、实际接收对象对消息进行处理形成处理结果,将该处理结果作为返回值发送至Java本地接口 ; C2、Java本地接口调用相应的中介函数对返回值进行转换封装形成发送方的返回值数据类型,将转换后的返回值返回至发送方并由实际发送对象接收。一种Android平台下C++和Java通信系统,其中,所述系统包括: 消息监听器接口模块,其分别在C++和Java中设置,用于C++和Java中的一方作为接收方并利用接收方的消息监听器接口模块获取消息或返回的处理结果; 消息管理类模块,其分别在C++和Java中设置,用于C++和Java其中的另一方作为发送方并利用发送方的消息管理类模块发出消息,以及查找消息的实际接收对象; Java本地接口模块,用于转换消息的格式并将转换后的消息进行转发,以及用于转换返回的处理结果的类型并将转换后的处理结果进行转发。有益效果:本专利技术提供一种Android平台下C++和Java通信的方法及系统,通过本专利技术方法省却了建立Jni通信的繁琐过程,为开发者提供了一套简单实用的C++和Java通信接口,降低了涉及C++和Java通信的程序的开发难度,方便了开发者的开发工作。【附图说明】图1为本专利技术具体实施例中Android平台下C++和Java通信的方法流程图。图2为本专利技术另一具体实施例中Java给C++发消息的活动流程图。图3为本专利技术另一具体实施例中C++给Java发消息的活动流程图。图4为本专利技术具体实施例中Android平台下C++和Java通信系统原理框图。【具体实施方式】本专利技术提供一种Android平台下C++和Java通信的方法及系统,为使本专利技术的目的、技术方案及效果更加清楚、明确,以下对本专利技术进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术提供一种Android平台下C++和Java通信的方法,其中,所述方法如图1所示,其步骤为: S100, C++和Java其中一方作为发送方利用其预先创建的消息管理类发出消息后,通过预先创建的Java本地接口转换消息的格式并将转换后的消息进行转发。基于步骤S100的描述,在所述步骤S100之前还应包括:分别预先创建C++和Java两部分的消息监听器接口和消息管理类,以及用于消息转发的Java本地接口。即分别创建C++部分和Java部分的程序,其中,Java部分的程序包括创建的消息监听器接口和消息管理类,而C++部分的程序也包括消息监听器接口和消息管理类,为便于区分,可将C++部分的消息监听器接口和消息管理类分别称之为C消息监听器接口和C消息管理类,将Java部分的消息监听器接口和消息管理类分别称之为J消息监听器接口和J消息管理类。Java本地接口具体是指Jni (Java Native Interface)部分的程序,其是C++和Java的接口部分,负责两部分之间消息的转发。所述C++的C消息监听器接口为所有消息接收对象的父类,C++部分需要接受消息的类必须继承自此接口。该C消息监听器接口具有消息监听接口的功能,其监听接口参数中包括消息主题和消息参数,该C消息监听器接口在监听过程中能够获取所监听部分的名字。并且,在新建消息接收对象时,其会自动将自身注册到消息管理类中。同样的,所述Java的消息监听器接口具有与C++的C消息监听器接口类似本文档来自技高网...
【技术保护点】
一种Android平台下C++和Java通信的方法,其特征在于,所述方法为:A、C++和Java中的一方作为发送方并利用发送方预先创建的消息管理类发出消息后,通过预先创建的Java本地接口转换消息的格式并将转换后的消息进行转发;B、C++和Java中的另外一方作为接收方并利用接收方预先创建消息监听器接口获取该消息,并通过接收方的消息管理类查找该消息的实际接收对象,之后将消息发送给查找到的实际接收对象;C、接收方的消息管理类将实际接收对象对消息的处理结果通过Java本地接口转换类型后返回至发送方。
【技术特征摘要】
【专利技术属性】
技术研发人员:秦龙龙,卢伟超,
申请(专利权)人:TCL集团股份有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。