Android系统下客户端对服务器中应用程序的控制方法与流程

文档序号:12747829阅读:209来源:国知局

本发明涉及一种应用程序的控制方法,具体地说,是涉及一种Android系统下客户端对服务器中应用程序的控制方法。



背景技术:

当前Android系统应用越来越广泛,很多设备都搭载了Android系统,随着硬件的发展Android设备的处理速度也有很大的提高,因此也出现了Android设备作为服务器的需求。现有方案可以访问到Android设备中的图片、音乐、视频等文件,但无法访问安装程序中的内容,给使用带来较大限制。



技术实现要素:

本发明为了解决现有Android设备之间仅能访问图片、音乐、视频等文件,但无法访问安装程序中的内容,给使用带来较大限制的技术问题,提出了一种Android系统下客户端对服务器中应用程序的控制方法,可以解决上述问题。

为了解决上述技术问题,本发明采用以下技术方案予以实现:

Android系统下客户端对服务器中应用程序的控制方法,所述服务器搭载有Android系统,包括以下步骤:

(1)、客户端通过网络向服务器发送请求,所述请求至少包括插件的包名、调用的函数名、参数名和参数值;

(2)、所述服务器中的WebServer服务接收并解析所述请求,根据插件的包名在本地Android包管理文件中查找对应的插件,然后将所述请求中调用的函数名、参数名和参数值转发给所述插件的ContentProvider;

(3)、所述插件的ContentProvider将调用的函数名、参数名和参数值作为其参数传递给插件的call函数;

(4)、所述插件的call函数根据所述调用的函数名,查找到该函数,将所述参数名和参数值传递给该函数,并运行该函数,运行完毕后返回运行结果至所述call函数;

(5)、所述服务器将所述运行结果发送至所述客户端。

进一步的,所述服务器中设置有广播接收器,所述广播接收器用于接收服务器开机的广播,当服务器开机时即启动所述WebServer服务。

进一步的,步骤(5)中,所述Webserver服务所述运行结果封装成Http Response发送至所述客户端。

进一步的,在步骤(1)之前,还包括插件在Android清单文件中声明可读权限的步骤,在本步骤中,对外提供控制的插件将其所包含的其中一个ContentProvider声明可读权限,步骤(2)和步骤(3)中,所述插件的ContentProvider为该插件中声明可读权限的ContentProvider。

进一步的,当一个插件中同时多个ContentProvider被声明为可读权限时,只有排序第一个的ContentProvider被发现。

进一步的,客户端向服务器发送的请求为URL格式。

进一步的,所述WebServer服务是多线程的,可以同时接收并处理多个请求。

与现有技术相比,本发明的优点和积极效果是:本发明的Android系统下客户端对服务器中应用程序的控制方法,不需要修改底层的源码,通过添加或者修改插件来添加或者修改向外提供的接口,实现了Android系统下客户端对服务器中应用程序的控制,插件和Webserver服务是相互独立的应用程序,服务与插件、插件与插件间互相独立、互不影响,耦合性低。

结合附图阅读本发明实施方式的详细描述后,本发明的其他特点和优点将变得更加清楚。

附图说明

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

图1是本发明所提出的Android系统下客户端对服务器中应用程序的控制方法的一种实施例流程图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一,本实施例提出了一种Android系统下客户端对服务器中应用程序的控制方法,其中,服务器搭载有Android系统,该控制方法包括以下步骤:

S1、客户端向服务器发送请求,请求至少包括插件的包名、调用的函数名、参数名和参数值;

在本实施例中,优选客户端通过网络向服务器发送的请求为URL格式,通过将插件的包名、调用的函数名、参数名和参数值写成URL格式,URL具有唯一性特点,它包含的信息指出文件的位置以及处理方式信息,使得请求传输方便易识别。

WebServer服务安装于作为服务器的Android设备中,作为客户端的设备需要安装相应的客户端程序,客户端操作客户端程序,生成请求并通过网络发送至服务器,由服务器的WebServer服务接收。

S2、服务器接收并解析请求,根据插件的包名在本地Android包管理文件中查找对应的插件,然后将请求中的调用的函数名、参数名和参数值转发给所述插件的ContentProvider;

插件是服务器中可以对外提供接口的应用程序,服务器中可以有多个插件,但只需要一个Webserver服务。任何Android设备只要安装了Webserver服务即可转换成Web服务器,不需要修改底层的源码。而且,服务器只需通过添加或者修改插件的属性来添加或者修改向外提供的接口。插件和Webserver服务是相互独立的应用程序,服务与插件、插件与插件间互相独立、互不影响,从而降低耦合性。

S3、插件的ContentProvider将调用的函数名、参数名和参数值作为其参数传递给插件的call函数;

ContentProvider(内容提供者)是Android中的四大组件之一,主要用于对外共享数据,也就是通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider对指定应用中的数据进行操作。

在Android 4.4(API level 17)以上的SDK 里面,ContentProvider 提供了一个新的接口public Bundle call (String method, String arg, Bundle extras),利用这个接口不需要编写AIDL文件以及实现Service子类就可以实现进程间通信(RPC),通过call方法调用具体的函数得到处理结果。

S4、插件的call函数根据所述调用的函数名,查找到该函数,将参数名和参数值传递给该函数,并运行该函数,运行完毕后返回运行结果至call函数;

S5、服务器将运行结果发送至客户端。

作为服务器的Android设备需要在系统启动时即启动Webserver服务,以能够实时监听客户端发送的请求,实现作为服务器的功能,本实施例中优选服务器中设置有广播接收器,所述广播接收器用于接收服务器开机的广播,当服务器开机时即启动所述WebServer服务。Webserver服务在设备开机时启动,监听网络中的请求,根据请求的内容查找到具体插件中的函数,并将函数处理结果返回给客户端。

步骤S5中,所述Webserver服务所述运行结果封装成Http Response发送至所述客户端,以方便数据的发送与接收识别。

在步骤S1之前,还包括插件在Android清单文件中声明可读权限的步骤,在本步骤中,对外提供控制的插件将其所包含的其中一个ContentProvider声明可读权限,步骤S2和步骤S3中,所述插件的ContentProvider为该插件中声明可读权限的ContentProvider。通过声明可读权限的方式,保护服务器中应用程序的安全,只有将插件的属性声明为可读权限,才可以提供对外接口,也就是可以由客户端控制执行,否则,客户端无法控制操作,插件的权限声明比较灵活,可以根据实际需要设置,进而实现了提供对外接口插件的增加或者删减。

本方法可以把一个普通的Android设备转变成一个服务器,让其他客户端设备可以通过网络请求访问服务器中的应用程序的方法,客户端设备所安装的系统不限定,均可以通过网络向服务器发送请求,并执行相应命令。

由于一个插件中可以同时对应多个ContentProvider,因此,正常情况下提供对外接口的插件,只需将其中一个ContentProvider设置可读即可,当一个插件中同时多个ContentProvider被声明为可读权限时,只有排序第一个的ContentProvider被发现,防止可使用的ContentProvider太多WebServer服务出现数据传输错误。

WebServer服务是多线程的,可以同时接收并处理多个请求,也即,一个服务器可以同时接收多个客户端的请求,并进行处理,按照一定的优先级别执行相应控制。

实施例二,本实施例提供了实施例一中Android系统下客户端对服务器中应用程序的控制方法在一个智能家居中的应用,在该应用中为了让家庭成员之间可以共享家中各家电设备的状态并对设备进行控制,将家电设备的数据信息存储在路由器(路由器搭载Android系统)中,由路由器发起对家电设备的控制。为了让路由器提供设备控制的函数,使得家庭成员可以通过手机调用该函数达到控制家中设备的目的,在路由器上应用了实施例一所述的方法。

首先在路由器上安装Webserver服务,然后按照上一部分所述的要求开发插件,插件中包括各种控制设备的方法函数,将开发完成后的插件安装到路由器上,最后在家庭成员手机客户端中访问相应的URL控制家电设备,例如实现开灯操作:路由器的IP为192.168.1.1,webserver服务中设置的端口为8080,插件包名为com.goertek.controlcenter,插件中开灯的函数名为setOn,参数名称为on,参数值为true(boolean型),则客户端程序中开灯操作访问的URL为http://192.168.1.1:8080/com.goertek.controlcenter/setOn=true。用户手机端(作为客户端)通过向路由器(作为服务器)发送上述URL格式请求,路由器解析该请求,根据插件的包名com.goertek.controlcenter在本地Android包管理文件中查找对应的插件,然后将请求中的调用的函数名、参数名和参数值转发给所述插件的ContentProvider,最终由call函数调用该函数setOn实现开灯操作,客户端能够接收到路由器的返回值。

通过上述智能家居项目的验证,本文所涉及的方法能够使Android应用程序向外提供内容和调用函数,网络中的其他客户端设备可以通过URL访问到应用程序中的文件和函数,并得到处理结果。

当然,上述说明并非是对本发明的限制,本发明也并不仅限于上述举例,本技术领域的普通技术人员在本发明的实质范围内所做出的变化、改型、添加或替换,也应属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1