一种启动应用的方法、设备、系统、终端及存储介质转让专利

申请号 : CN202010890825.0

文献号 : CN114124980B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 成翔李加润余美杰

申请人 : 荣耀终端有限公司

摘要 :

本申请公开了一种启动应用的方法、设备、系统、终端及存储介质,包括:第一应用向从设备代理模块发送第一请求,该第一请求中携带有第二设备的设备ID、第二应用的包名和界面名;响应于第一请求,从设备代理模块向第一设备管理模块发送第一查询请求,该第一查询请求中携带有第二设备的设备ID;然后从设备代理模块基于查询到第二设备在线,并查询得到第一应用的包名,请求启动第二应用的界面。本申请在IOT设备存储能力有限的情况下,提升IOT设备的设备能力,以达到资源共享,终端设备间的能力互补的效果。通过本申请提出的系统架构,主从设备之间配对连接的过程不需要在主设备上安装APP,也不需要用户做过多的操作,主从设备之间的配对连接更简单方便。

权利要求 :

1.一种启动应用的方法,其特征在于,应用于第一设备,所述第一设备安装有第一应用,所述第一设备包括从设备代理模块,第一设备管理模块,第一包管理服务BMS和第一通信模块,所述第一设备通过所述第一通信模块与第二设备建立通信连接,所述方法包括:响应于用户在所述第一应用上的第一操作,所述第一应用向所述从设备代理模块发送第一请求,所述第一请求中携带有所述第二设备的设备ID、第二应用的包名、所述第二应用的界面名;

响应于所述第一请求,所述从设备代理模块向所述第一设备管理模块发送第一查询请求,所述第一查询请求中携带有所述第二设备的设备ID;

响应于所述第一查询请求,所述第一设备管理模块确定所述第二设备是否在线;

响应于确定所述第二设备在线,所述第一设备管理模块向所述从设备代理模块返回第一查询响应,所述第一查询响应指示所述第二设备在线;

响应于所述第一请求,所述从设备管理模块还向所述第一BMS发送第二查询请求,所述第二查询请求中携带有所述第一应用的包名;

响应于所述第二查询请求,所述第一BMS向所述从设备代理模块返回第二查询响应,所述第二查询响应中携带有所述第一应用的公钥信息;

响应于所述从设备代理模块接收所述第一查询响应和所述第二查询响应,所述从设备代理模块向所述第二设备发送第二请求,所述第二请求与所述第一请求和所述第二查询响应关联,所述第二请求使得所述第二设备显示所述第二应用的界面。

2.根据权利要求1所述的方法,其特征在于,所述第一应用向所述从设备代理模块发送第一请求,具体为:所述第一应用通过第一接口向所述从设备代理模块发送第一请求,所述第一接口与第一命令ID相对应;

所述从设备代理模块向所述第二设备发送第二请求之前,所述方法还包括:所述从设备代理模块对所述第一命令ID、所述第一应用的公钥信息、和所述第一请求中携带的所述第二应用的包名、所述第二应用的界面名进行处理;

所述第二请求与所述第一请求和所述第二查询响应关联,具体为:所述第二请求携带有所述第一命令ID、所述第一应用的公钥信息、和所述第一请求中携带的所述第二应用的包名、所述第二应用的界面名。

3.根据权利要求1所述的方法,其特征在于,所述第一设备通过所述第一通信模块与第二设备建立通信连接之后,所述方法还包括:所述第一通信模块向所述第一设备管理模块发送所述第二设备的上线通知,所述上线通知中携带有所述第二设备的设备名称、设备ID、设备类型和设备IP;

响应于所述第一设备管理模块接收所述第二设备的上线通知,所述第一设备管理模块存储所述第二设备的设备名称、设备ID、设备类型和设备IP。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

响应于所述第一设备和第二设备断开通信连接,所述第一通信模块向所述第一设备管理模块发送所述第二设备的下线通知,所述下线通知中携带有所述第二设备的设备名称、设备ID、设备类型和设备IP中的至少一个;

响应于所述第一设备管理模块接收所述第二设备的下线通知,所述第一设备管理模块删除所述第二设备的设备名称、设备ID、设备类型和设备IP中的至少一个。

5.根据权利要求3所述的方法,其特征在于,所述第一设备管理模块确定所述第二设备是否在线,具体为:所述第一设备管理模块确定是否存储有所述第二设备的设备ID;

所述响应于确定所述第二设备在线,所述第一设备管理模块向所述从设备代理模块返回第一查询响应,具体为:响应于所述第一设备管理模块确定存储有所述第二设备的设备ID,所述第一设备管理模块向所述从设备代理模块返回第一查询响应。

6.根据权利要求1‑5任一项所述的方法,其特征在于,所述第一BMS中存储有所述第一应用的第一APP ID;

所述响应于所述第二查询请求,所述第一BMS向所述从设备代理模块返回第二查询响应之前,所述方法还包括:所述第一BMS根据所述第一应用的包名,查询得到所述第一应用对应的第一APP ID,根据所述第一APP ID获取所述第一应用的公钥信息,其中所述第一APP ID是所述第一设备安装所述第一应用时由所述第一BMS生成的。

7.根据权利要求1所述的方法,其特征在于,所述响应于用户在所述第一应用上的第一操作之前,所述方法还包括:所述从设备代理模块向所述第二设备发送第四请求,所述第四请求用于探测所述第二应用是否安装;

接收所述第二设备发送的第四请求响应,所述第四请求响应用于指示所述第二应用已安装。

8.根据权利要求7所述的方法,其特征在于,所述从设备代理模块向所述第二设备发送第四请求之前,所述方法还包括:响应于所述用户在所述第一应用上的第二操作,所述第一应用向所述从设备代理模块发送第三请求,所述第三请求中携带有所述第二设备的设备ID、第二应用的包名、所述第二应用的界面名,所述第二操作用于开始导航;

响应于所述第三请求,所述从设备代理模块向所述第一设备管理模块发送第三查询请求,所述第三查询请求中携带有所述第二设备的设备ID;

响应于所述第三查询请求,所述第一设备管理模块确定所述第二设备是否在线;

响应于确定所述第二设备在线,所述第一设备管理模块向所述从设备代理模块返回第三查询响应,所述第三查询响应指示所述第二设备在线;

响应于所述第三请求,所述从设备管理模块还向所述第一BMS发送第四查询请求,所述第四查询请求中携带有所述第一应用的包名;

响应于所述第四查询请求,所述第一BMS向所述从设备代理模块返回第四查询响应,所述第四查询响应中携带有所述第一应用的公钥信息。

9.根据权利要求7或8所述的方法,其特征在于,所述第一应用向所述从设备代理模块发送第三请求,具体为:所述第一应用通过第二接口向所述从设备代理模块发送第三请求,所述第二接口与第二命令ID相对应;

所述从设备代理模块向所述第二设备发送第四请求之前,所述方法还包括:所述从设备代理模块对所述第二命令ID、所述第一应用的公钥信息、和所述第三请求中携带的所述第二应用的包名、所述第二应用的界面名进行处理;

所述从设备代理模块向所述第二设备发送第四请求,具体为:

所述从设备代理模块向所述第二设备发送第四请求,所述第四请求中携带有所述第二命令ID、所述第一应用的公钥信息、和所述第三请求中携带的所述第二应用的包名、所述第二应用的界面名。

10.根据权利要求8所述的方法,其特征在于,所述接收所述第二设备发送的第四请求响应之后,所述方法还包括:执行所述第二操作。

11.根据权利要求1‑5任一项所述的方法,其特征在于,所述从设备代理模块向所述第二设备发送第二请求之后,所述方法还包括:所述第一应用向所述从设备代理模块发送第五请求,所述第五请求中携带有所述第二设备的设备ID、第二应用的包名、所述第二应用的界面名;

响应于所述第五请求,所述从设备代理模块向所述第一设备管理模块发送第五查询请求,所述第五查询请求中携带有所述第二设备的设备ID;

响应于所述第五查询请求,所述第一设备管理模块确定所述第二设备是否在线;

响应于确定所述第二设备在线,所述第一设备管理模块向所述从设备代理模块返回第五查询响应,所述第五查询响应指示所述第二设备在线;

响应于所述第五请求,所述从设备管理模块还向所述第一BMS发送第六查询请求,所述第六查询请求中携带有所述第一应用的包名;

响应于所述第六查询请求,所述第一BMS向所述从设备代理模块返回第六查询响应,所述第六查询响应中携带有所述第一应用的公钥信息;

所述从设备代理模块向所述第二设备发送第六请求,所述第六请求用于发送导航数据,第六请求中携带有目标数据,所述目标数据用于所述第二设备显示与所述目标数据相关的信息,所述导航数据用于所述第二设备显示导航信息。

12.根据权利要求11所述的方法,其特征在于,所述第一应用向所述从设备代理模块发送第五请求,具体为:所述第一应用通过第三接口向所述从设备代理模块发送第五请求,所述第三接口与第三命令ID相对应;

所述从设备代理模块向所述第二设备发送第六请求之前,所述方法还包括:所述从设备代理模块对所述第三命令ID、所述第一应用的公钥信息、和所述第五请求中携带的所述第二应用的包名、所述第二应用的界面名进行处理;

所述从设备代理模块向所述第二设备发送第六请求,具体为:

所述从设备代理模块向所述第二设备发送第六请求,所述第六请求中携带有所述第三命令ID、所述第一应用的公钥信息、和所述第五请求中携带的所述第二应用的包名、所述第二应用的界面名。

13.根据权利要求1‑5任一项所述的方法,其特征在于,所述第一设备为手机,所述第二设备为手表,所述第一应用为导航应用,所述第一操作用于开启导航互助功能。

14.一种启动应用的方法,其特征在于,应用于第二设备,所述第二设备安装有第二应用,所述第二设备包括第二分布式调度服务DMS,第二包管理服务BMS,第二元能力管理服务AMS和第二通信模块,所述第二设备通过所述第二通信模块与第一设备建立通信连接,所述方法包括:所述第二DMS接收所述第一设备发送的第二请求,所述第二请求使得所述第二设备显示所述第二应用的界面;

响应于所述第二DMS接收所述第一设备发送的第二请求,所述第二DMS对所述第二请求进行解析,得到第一应用的公钥信息、所述第二应用的包名和所述第二应用的界面名;

所述第二DMS向所述第二BMS发送第七查询请求,所述第七查询请求中携带有所述第二应用的包名;

响应于所述第七查询请求,所述第二BMS确定是否存储有所述第二应用的包名对应的第二APP ID;

响应于所述第二BMS确定储存有所述第二应用的包名对应的所述第二APP ID,所述第二BMS向所述第二DMS发送第七查询响应,所述第七查询响应用携带有所述第二APPID;

响应于接收所述第七查询响应,所述第二DMS进行应用鉴权;

响应于应用鉴权通过,所述第二DMS向所述第二AMS发送第七请求,所述第七请求中携带有所述第二应用的界面名,所述第二应用的界面名指向所述第二应用的第一界面;

响应于所述第七请求,所述第二AMS确定所述第二应用未启动;

响应于所述第二AMS确定的所述第二应用未启动,所述第二AMS启动所述第二应用;

显示所述第二应用的第一界面。

15.根据权利要求14所述的方法,其特征在于,所述第二DMS进行应用鉴权,具体为:所述第二DMS根据所述第二APP ID获取所述第二应用的公钥信息,所述第二DMS确定所述第二应用的公钥信息与所述第一应用的公钥信息是否相用;

响应于所述第二DMS确定所述第二应用的公钥信息与所述第一应用的公钥信息相同,则应用鉴权通过。

16.根据权利要求14所述的方法,其特征在于,所述第二DMS接收所述第一设备发送的第二请求之前,所述方法还包括:所述第二DMS接收所述第一设备发送的第四请求,所述第四请求用于探测所述第二应用是否安装;

响应于所述第二DMS接收所述第一设备发送的第四请求,所述第二DMS对所述第四请求进行解析,得到所述第一应用的公钥信息、所述第二应用的包名和所述第二应用的界面名;

所述第二DMS向所述第二BMS发送第八查询请求,所述第八查询请求中携带有所述第二应用的包名;

响应于所述第八查询请求,所述第二BMS确定是否存储有所述第二应用的包名对应的第二APP ID;

响应于所述第二BMS确定储存有所述第二应用的包名对应的所述第二APP ID,所述第二BMS向所述第二DMS发送第八查询响应,所述第八查询响应中携带有所述第二APPID;

响应于接收所述第八查询响应,所述第二DMS进行应用鉴权;

响应于应用鉴权通过,所述第二DMS向所述第一应用发送第四请求响应,所述第四请求响应用于指示所述第二应用已安装。

17.根据权利要求14‑16任一项所述的方法,其特征在于,所述第二应用显示所述第一界面之后,所述方法还包括:所述第二设备接收从设备代理模块发送的第六请求,所述第六请求用于发送数据,所述第六请求中携带有目标数据;

响应于所述第二DMS接收所述第一设备发送的第六请求,所述第二DMS对所述第六请求进行解析,得到所述第一应用的公钥信息、所述第二应用的包名和所述第二应用的界面名;

所述第二DMS向所述第二BMS发送第九查询请求,所述第九查询请求中携带有所述第二应用的包名;

响应于所述第九查询请求,所述第二BMS确定是否存储有所述第二应用的包名对应的第二APP ID;

响应于所述第二BMS确定储存有所述第二应用的包名对应的所述第二APP ID,所述第二BMS向所述第二DMS发送第九查询响应,所述第九查询响应中携带有所述第二APPID;

响应于接收所述第九查询响应,所述第二DMS进行应用鉴权;

响应于应用鉴权通过,所述第二DMS向所述第二AMS发送第八请求,所述第八请求中携带有所述第二应用的包名和所述目标数据;

响应于所述第八请求,所述第二AMS确定所述第二应用;

响应于确定所述第二应用,所述第二AMS向所述第二应用发送所述目标数据;

响应于接收所述目标数据,所述第二应用在所述第一界面上显示所述目标数据所对应的信息。

18.一种启动应用的设备,为第一设备,其特征在于,所述第一设备包括执行权利要求

1‑13任一项所述的方法的装置。

19.一种启动应用的设备,为第二设备,其特征在于,所述第二设备包括执行权利要求

14‑17任一项所述的方法的装置。

20.一种启动应用的系统,其特征在于,包括第一设备和第二设备,所述第一设备安装有第一应用,所述第一设备包括从设备代理模块,第一设备管理模块,第一包管理服务BMS和第一通信模块,所述第二设备安装有第二应用,所述第二设备包括第二分布式调度服务DMS,第二包管理服务BMS,第二元能力管理服务AMS和第二通信模块,所述第一设备通过所述第一通信模块与所述第二设备的所述第二通信模块建立通信连接,所述系统包括:响应于用户在所述第一应用上的第一操作,所述第一应用向所述从设备代理模块发送第一请求,所述第一请求中携带有所述第二设备的设备ID、第二应用的包名、所述第二应用的界面名;

响应于所述第一请求,所述从设备代理模块向所述第一设备管理模块发送第一查询请求,所述第一查询请求中携带有所述第二设备的设备ID;

响应于所述第一查询请求,所述第一设备管理模块确定所述第二设备是否在线;

响应于确定所述第二设备在线,所述第一设备管理模块向所述从设备代理模块返回第一查询响应,所述第一查询响应指示所述第二设备在线;

响应于所述第一请求,所述从设备管理模块还向所述第一BMS发送第二查询请求,所述第二查询请求中携带有所述第一应用的包名;

响应于所述第二查询请求,所述第一BMS向所述从设备代理模块返回第二查询响应,所述第二查询响应中携带有所述第一应用的公钥信息;

响应于所述从设备代理模块接收所述第一查询响应和所述第二查询响应,所述从设备代理模块向所述第二设备的第二DMS发送第二请求,所述第二请求与所述第一请求和所述第二查询响应关联,所述第二请求使得所述第二设备显示所述第二应用的界面;

所述第二DMS接收所述第一设备发送的所述第二请求,所述第二请求使得所述第二设备显示所述第二应用的界面;

响应于所述第二DMS接收所述第一设备发送的第二请求,所述第二DMS对所述第二请求进行解析,得到所述第一应用的公钥信息、所述第二应用的包名和所述第二应用的界面名;

所述第二DMS向所述第二BMS发送第七查询请求,所述第七查询请求中携带有所述第二应用的包名;

响应于所述第七查询请求,所述第二BMS确定是否存储有所述第二应用的包名对应的第二APP ID;

响应于所述第二BMS确定储存有所述第二应用的包名对应的所述第二APP ID,所述第二BMS向所述第二DMS发送第七查询响应,所述第七查询响应用携带有所述第二APPID;

响应于接收所述第七查询响应,所述第二DMS进行应用鉴权;

响应于应用鉴权通过,所述第二DMS向所述第二AMS发送第七请求,所述第七请求中携带有所述第二应用的界面名,所述第二应用的界面名指向所述第二应用的第一界面;

响应于所述第七请求,所述第二AMS确定所述第二应用未启动;

响应于所述第二AMS确定的所述第二应用未启动,所述第二AMS启动所述第二应用;

显示所述第二应用的第一界面。

21.一种终端,为第一终端,其特征在于,包括:处理器,存储器和通信接口;其中,所述存储器、所述通信接口和所述处理器耦合;所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述终端执行如权利要求1‑13中任一项所述的方法。

22.一种终端,为第二终端,其特征在于,包括:处理器,存储器和通信接口;其中,所述存储器、所述通信接口和所述处理器耦合;所述存储器用于存储计算机程序代码,所述计算机程序代码包括计算机指令,当所述处理器执行所述计算机指令时,所述终端执行如权利要求14‑17中任一项所述的方法。

23.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在终端上运行时,使得所述终端执行如权利要求1‑13中任一项所述的方法。

24.一种计算机存储介质,其特征在于,包括计算机指令,当所述计算机指令在终端上运行时,使得所述终端执行如权利要求14‑17中任一项所述的方法。

说明书 :

一种启动应用的方法、设备、系统、终端及存储介质

技术领域

[0001] 本申请涉及分布式技术领域,尤其涉及一种启动应用的方法、设备、系统、终端及存储介质。

背景技术

[0002] 当前,物联网(Internet of Things,IOT)产品内存多为KB级别,由于内存小的限制导致大多数IOT产品能力有限。例如摄像头,支持人脸采集,但是不支持人脸识别,通常需要加装其他具有人脸识别功能的设备完成人脸识别,此时需要用户自行购买设备。又如手表,不具有拍照功能,因此无法直接使用手表进行拍照。在日常生活中的某些场景中,使用手表拍照相较于使用手机拍照会更加方便。为实现通过手表进行拍照,如果直接在手表上增加拍照能力,会增加手表系统的负担,影响设备的整体能力,与此同时,提升IOT设备的软硬件能力,亦会增加设备成本。如此,当前IOT产品能力受到很大限制,影响用户体验。

发明内容

[0003] 本申请提供了一种启动应用的方法、设备、系统、终端及存储介质,通过本申请的方法,基于主设备代理,可以实现主设备和从设备之间服务的互相调用。可以在IOT设备存储能力有限的情况下,提升IOT设备的设备能力,以达到资源共享,终端设备间的能力互补的效果,进而提升用户体验。并且,通过本申请提出的系统架构,主从设备之间配对连接的过程不需要在主设备上安装APP,也不需要用户做过多的操作,主从设备之间的配对连接更简单方便。
[0004] 第一方面,本申请提供了一种启动应用的方法,应用于第一设备,该第一设备安装有第一应用,该第一设备包括从设备代理模块,第一设备管理模块,第一包管理服务(bundle manager service,BMS)和第一通信模块,该第一设备通过该第一通信模块与第二设备建立通信连接,方法包括:响应于用户在第一应用上的第一操作,第一应用向从设备代理模块发送第一请求,该第一请求中携带有第二设备的设备ID、第二应用的包名、第二应用的界面名;响应于第一请求,从设备代理模块向第一设备管理模块第一查询请求,该第一查询请求中携带有该第二设备的设备ID;响应于该第一查询请求,第一设备管理模块确定第二设备是否在线;响应于确定第二设备在线,第一设备管理模块向从设备代理模块返回第一查询响应,该第一查询响应指示第二设备在线;响应于第一请求,从设备管理模块还向第一BMS发送第二查询请求,该第二查询请求中携带有第一应用的包名;响应于该第二查询请求,该第一BMS向从设备代理模块返回第二查询响应,该第二查询响应中携带有第一应用的公钥信息;响应于从设备代理模块接收第一查询响应和第二查询响应,从设备代理模块向第二设备发送第二请求,该第二请求与第一请求和所述第二查询响应关联,该第二请求用于使得第二设备显示第二应用的界面。
[0005] 本申请提供的启动应用的方法,通过从设备代理模块,可以快速启动第二设备的上的第二应用的界面。并且,通过本申请提出的系统架构,主从设备之间配对连接的过程不需要在主设备上安装APP,也不需要用户做过多的操作,主从设备之间的配对连接更简单方便。
[0006] 在一种可能的实现方式中,第一应用向从设备代理模块发送第一请求,具体为:第一应用通过第一接口向从设备代理模块发送第一请求,该第一接口与第一命令ID相对应;从设备代理模块向第二设备发送第二请求之前,还包括:从设备代理模块对第一命令ID、第一应用的公钥信息、和第一请求中携带的第二应用的包名、第二应用的界面名进行处理;第二请求与第一请求和第二查询响应关联,具体为:第二请求携带有第一命令ID、第一应用的公钥信息、和第一请求中携带的第二应用的包名、第二应用的界面名。
[0007] 在一种可能的实现方式中,第一设备通过第一通信模块与第二设备建立通信连接之后,该方法还包括:第一通信模块向第一设备管理模块发送第二设备的上线通知,该上线通知中携带有第二设备的设备名称、设备ID、设备类型和设备IP;响应于第一设备管理模块接收第二设备的上线通知,第一设备管理模块存储第二设备的设备名称、设备ID、设备类型和设备IP。
[0008] 在一种可能的实现方式中,该方法还包括:响应于第一设备和第二设备断开通信连接,第一通信模块向第一设备管理模块发送第二设备的下线通知,下线通知中携带有第二设备的设备名称、设备ID、设备类型和设备IP中的至少一个;响应于第一设备管理模块接收第二设备的下线通知,第一设备管理模块删除第二设备的设备名称、设备ID、设备类型和设备IP中的至少一个。
[0009] 在一种可能的实现方式中,第一设备管理模块确定第二设备是否在线,具体为:第一设备管理模块确定是否存储有第二设备的设备ID;响应于确定第二设备在线,第一设备管理模块向从设备代理模块返回第一查询响应,具体为:响应于第一设备管理模块确定存储有第二设备的设备ID,第一设备管理模块向从设备代理模块返回第一查询响应。
[0010] 在一种可能的实现方式中,第一BMS中存储有第一应用的第一APP ID;响应于第二查询请求,第一BMS向从设备代理模块返回第二查询响应之前,该方法还包括:第一BMS根据第一应用的包名,查询得到第一应用对应的第一APP ID,根据第一APP ID获取第一应用的公钥信息,其中第一APP ID是第一设备安装所述第一应用时由第一BMS生成的。
[0011] 在一种可能的实现方式中,响应于用户在第一应用上的第一操作之前,该方法还包括:从设备代理模块向第二设备发送第四请求,该第四请求用于探测第二应用是否安装;接收第二设备发送的第四请求响应,该第四请求响应用于指示第二应用已安装。
[0012] 在一种可能的实现方式中,从设备代理模块向第二设备发送第四请求之前,该方法还包括:响应于用户在第一应用上的第二操作,第一应用向从设备代理模块发送第三请求,该第三请求中携带有第二设备的设备ID、第二应用的包名、第二应用的界面名;响应于第三请求,从设备代理模块向第一设备管理模块发送第三查询请求,该第三查询请求中携带有第二设备的设备ID;响应于该第三查询请求,第一设备管理模块确定第二设备是否在线;响应于确定第二设备在线,第一设备管理模块向从设备代理模块返回第三查询响应,该第三查询响应指示第二设备在线;响应于第三请求,从设备管理模块还向第一BMS发送第四查询请求,该第四查询请求中携带有第一应用的包名;响应于该第四查询请求,第一BMS向从设备代理模块返回第四查询响应,该第四查询响应中携带有第一应用的公钥信息;
[0013] 在一种可能的实现方式中,第一应用向从设备代理模块发送第三请求,具体为:第一应用通过第二接口向所述从设备代理模块发送第三请求,第二接口与第二命令ID相对应;从设备代理模块向第二设备发送第四请求之前,方法还包括:从设备代理模块对第二命令ID、第一应用的公钥信息、和第三请求中携带的第二应用的包名、第二应用的界面名进行处理;从设备代理模块向第二设备发送第四请求,具体为:从设备代理模块向第二设备发送第四请求,该第四请求中携带有第二命令ID、第一应用的公钥信息、和第三请求中携带的第二应用的包名、第二应用的界面名。
[0014] 在一种可能的实现方式中,接收第二设备发送的第四请求响应之后,该方法还包括:执行所述第二操作。
[0015] 在一种可能的实现方式中,从设备代理模块向第二设备发送第二请求之后,该方法还包括:第一应用向从设备代理模块发送第五请求,第五请求中携带有第二设备的设备ID、第二应用的包名、第二应用的界面名;响应于该第五请求,从设备代理模块向第一设备管理模块发送第五查询请求,该第五查询请求中携带有第二设备的设备ID;响应于第五查询请求,第一设备管理模块确定第二设备是否在线;响应于确定第二设备在线,第一设备管理模块向从设备代理模块返回第五查询响应,该第五查询响应指示第二设备在线;响应于第五请求,从设备管理模块还向第一BMS发送第六查询请求,该第六查询请求中携带有第一应用的包名;响应于第六查询请求,第一BMS向从设备代理模块返回第六查询响应,第六查询响应中携带有第一应用的公钥信息;从设备代理模块向第二设备发送第六请求,该第六请求用于发送数据,第六请求中携带有目标数据,所述目标数据用于第二设备显示与所述目标数据相关的信息。
[0016] 在一种可能的实现方式中,第一应用向从设备代理模块发送第五请求,具体为:第一应用通过第三接口向从设备代理模块发送第五请求,该第三接口与第三命令ID相对应;从设备代理模块向第二设备发送第六请求之前,该方法还包括:从设备代理模块对第三命令ID、第一应用的公钥信息、和第五请求中携带的第二应用的包名、第二应用的界面名进行处理;从设备代理模块向第二设备发送第六请求,具体为:从设备代理模块向第二设备发送第六请求,该第六请求中携带有第三命令ID、第一应用的公钥信息、和第五请求中携带的第二应用的包名、第二应用的界面名。
[0017] 在一种可能的实现方式中,该第一设备为手机,第二设备为手表,第一应用为导航应用,第一操作用于开启导航互助功能,第二操作用于开始导航,第六请求具体用于发送导航数据,该导航数据用于第二设备显示导航信息。
[0018] 第二方面,本申请提供了另一种启动应用的方法,应用于第二设备,该第二设备安装有第二应用,第二设备包括第二分布式调度服务(Distributed Scheduling Service,DMS),第二包管理服务(bundle manager service,BMS),第二元能力管理服务(ability manager service,AMS)和第二通信模块,第二设备通过第二通信模块与第一设备建立通信连接,该方法包括:第二DMS接收第一设备发送的第二请求,该第二请求使得第二设备显示第二应用的界面;响应于第二DMS接收第一设备发送的第二请求,第二DMS对第二请求进行解析,得到第一应用的公钥信息、第二应用的包名和第二应用的界面名;第二DMS向第二BMS发送第七查询请求,该第七查询请求中携带有第二应用的包名;响应于所述第七查询请求,第二BMS确定是否存储有第二应用的包名对应的第二APP ID;响应于第二BMS确定储存有第二应用的包名对应的所述第二APP ID,第二BMS向第二DMS发送第七查询响应,该第七查询响应用携带有第二APP ID;响应于接收第七查询响应,第二DMS进行应用鉴权;响应于应用鉴权通过,第二DMS向第二AMS发送第七请求,该第七请求中携带有第二应用的界面名,第二应用的界面名指向所述第二应用的第一界面;响应于第七请求,第二AMS确定第二应用未启动;响应于第二AMS确定的第二应用未启动,第二AMS启动第二应用;显示第二应用的第一界面。
[0019] 在一种可能的实现方式中,第二DMS进行应用鉴权,具体为:第二DMS根据第二APP ID获取第二应用的公钥信息,第二DMS确定第二应用的公钥信息与第一应用的公钥信息是否相用;响应于第二DMS确定第二应用的公钥信息与所述第一应用的公钥信息相同,则应用鉴权通过。
[0020] 在一种可能的实现方式中,第二DMS接收第一设备发送的第二请求之前,该方法还包括:第二DMS接收第一设备发送的第四请求,该第四请求用于探测第二应用是否安装;响应于第二DMS接收第一设备发送的第四请求,该第二DMS对第四请求进行解析,得到第一应用的公钥信息、第二应用的包名和第二应用的界面名;第二DMS向第二BMS发送第八查询请求,该第八查询请求中携带有第二应用的包名;响应于第八查询请求,第二BMS确定是否存储有第二应用的包名对应的第二APP ID;响应于第二BMS确定储存有第二应用的包名对应的第二APP ID,第二BMS向第二DMS发送第八查询响应,该第八查询响应中携带有第二APP ID;响应于接收第八查询响应,第二DMS进行应用鉴权;响应于应用鉴权通过,第二DMS向第一应用发送第四请求响应,第四请求响应用于指示所述第二应用已安装。
[0021] 在一种可能的实现方式中,第二应用显示第一界面之后,该方法还包括:第二设备接收从设备代理模块发送的第六请求,第六请求用于发送数据,第六请求中携带有目标数据;响应于第二DMS接收第一设备发送的第六请求,第二DMS对第六请求进行解析,得到第一应用的公钥信息、第二应用的包名和第二应用的界面名;第二DMS向第二BMS发送第九查询请求,第九查询请求中携带有第二应用的包名;响应于第九查询请求,第二BMS确定是否存储有第二应用的包名对应的第二APP ID;响应于第二BMS确定储存有第二应用的包名对应的第二APP ID,第二BMS向第二DMS发送第九查询响应,第九查询响应中携带有第二APP ID;响应于接收第九查询响应,第二DMS进行应用鉴权;响应于应用鉴权通过,第二DMS向第二AMS发送第八请求,该第八请求中携带有第二应用的包名和目标数据;响应于所述第八请求,所述第二AMS确定第二应用;响应于确定第二应用,第二AMS向第二应用发送目标数据;
响应于接收目标数据,第二应用在第一界面上显示目标数据对应的信息。
[0022] 第三方面,本申请提供了一种启动应用的设备,具体为第一设备,该第一设备包括执行上述第一方面任一项可能的实现方式中的启动应用的方法的装置。
[0023] 第四方面,本申请提供了一种启动应用的设备,具体为第二设备,该第二设备包括执行上述第二方面任一项可能的实现方式中的启动应用的方法的装置。
[0024] 第五方面,本申请提供了一种启动应用的系统,该系统包括第一设备和第二设备,第一设备安装有第一应用,第一设备包括从设备代理模块,第一设备管理模块,第一包管理服务(bundle manager service,BMS)和第一通信模块,第二设备安装有第二应用,第二设备包括第二分布式调度服务(Distributed Scheduling Service,DMS),第二包管理服务(bundle manager service,BMS),第二元能力管理服务(ability manager service,AMS)和第二通信模块,第一设备通过第一通信模块与第二设备的第二通信模块建立通信连接,该系统包括:响应于用户在第一应用上的第一操作,第一应用向从设备代理模块发送第一请求,第一请求中携带有第二设备的设备ID、第二应用的包名、第二应用的界面名;响应于第一请求,从设备代理模块向第一设备管理模块发送第一查询请求,第一查询请求中携带有第二设备的设备ID;响应于第一查询请求,第一设备管理模块确定第二设备是否在线;响应于确定第二设备在线,第一设备管理模块向从设备代理模块返回第一查询响应,第一查询响应指示第二设备在线;响应于第一请求,从设备管理模块还向第一BMS发送第二查询请求,第二查询请求中携带有第一应用的包名;响应于第二查询请求,第一BMS向从设备代理模块返回第二查询响应,第二查询响应中携带有第一应用的公钥信息;响应于从设备代理模块接收第一查询响应和第二查询响应,从设备代理模块向第二设备的第二DMS发送第二请求,第二请求与第一请求和第二查询响应关联,第二请求使得第二设备显示第二应用的界面;第二DMS接收第一设备发送的第二请求,第二请求使得第二设备显示第二应用的界面;响应于第二DMS接收第一设备发送的第二请求,第二DMS对第二请求进行解析,得到第一应用的公钥信息、第二应用的包名和第二应用的界面名;第二DMS向第二BMS发送第七查询请求,第七查询请求中携带有第二应用的包名;响应于第七查询请求,第二BMS确定是否存储有第二应用的包名对应的第二APP ID;响应于第二BMS确定储存有第二应用的包名对应的第二APP ID,第二BMS向第二DMS发送第七查询响应,第七查询响应用携带有第二APP ID;响应于接收第七查询响应,第二DMS进行应用鉴权;响应于应用鉴权通过,第二DMS向第二AMS发送第七请求,第七请求中携带有第二应用的界面名,第二应用的界面名指向第二应用的第一界面;响应于第七请求,第二AMS确定第二应用未启动;响应于第二AMS确定的第二应用未启动,第二AMS启动所述第二应用;显示第二应用的第一界面。
[0025] 第六方面,本申请提供了一种终端,为第一终端,包括:一个或多个处理器,存储器和通信接口;其中,该一个或多个存储器、通信接口和处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当处理器执行计算机指令时,使得第一终端执行上述任一方面任一项可能的实现方式中的启动应用的方法。
[0026] 第七方面,本申请提供了一种终端,为第二终端,包括:一个或多个处理器,存储器和通信接口;其中,该一个或多个存储器、通信接口和处理器耦合;存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,当处理器执行计算机指令时,使得第一终端执行上述任一方面任一项可能的实现方式中的启动应用的方法。
[0027] 第八方面,本申请实施例提供了一种计算机存储介质,包括计算机指令,当计算机指令在终端上运行时,使得通信装置执行上述任一方面任一项可能的实现方式中的启动应用的方法。
[0028] 第九方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述任一方面任一项可能的实现方式中的启动应用的方法。

附图说明

[0029] 图1为本申请实施例提供的一种分布式系统的架构示意图;
[0030] 图2为本申请实施例提供的一种手机导航界面示意图;
[0031] 图3(a)为本申请实施例提供的一种手表结构示意图;
[0032] 图3(b)为本申请实施例提供的一种手表导航界面示意图;
[0033] 图4为一种手机和手表绑定的流程图;
[0034] 图5为本申请实施例提供的一种终端的硬件结构示意图;
[0035] 图6为本申请实施例提供的一种终端的软件系统架构示意图;
[0036] 图7为本申请实施例提供的一种系统架构图;
[0037] 图8为本申请实施例提供的一种通过手机启动手表应用的方法流程图;
[0038] 图9为本申请实施例提供的另一种启动应用的方法的流程示意图;
[0039] 图10为本申请实施例提供的另一种启动应用的方法的流程示意图;
[0040] 图11为本申请实施例提供的一种手机界面示意图;
[0041] 图12为本身请实施例提供的一种手机手表导航示意图;
[0042] 图13为本身请实施例提供的另一种手机手表导航示意图;
[0043] 图14为本身请实施例提供的另一种手机手表导航示意图;
[0044] 图15为本身请实施例提供的另一种手机手表导航示意图;
[0045] 图16为本申请实施例提供的一种通过手表启动手机应用的方法流程图;
[0046] 图17为本申请实施例提供的另一种通过手表启动手机应用的方法流程图;
[0047] 图18为本申请实施例提供的另一种通过手表启动手机应用的方法流程图。

具体实施方式

[0048] 为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本申请实施例中的技术方案进行描述。
[0049] 在本申请实施例的描述中,“示例性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
[0050] 在本申请实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。
[0051] 此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
[0052] 参考图1,图1示出了一种分布式系统的架构图。该分布式系统中可以包括有多个终端。其中,该多个终端可以是连入同一个网络,如图1所示,该多个终端可以连入同一个局域网,该分布式系统中各设备组成的网络可以称为分布式网络。在一种可能的实现方式中,该多个终端还可以登录有同一个系统账号,例如,该多个终端登录的系统账号都可以为“HW9527”。在一种可能的实现方式中,该多个终端上登录的系统账号可以都属于同一个账户组。例如,该多个终端上登录的系统账号包括有“HW001”,“HW002”,“HW003”。其中,系统账户“HW001”,“HW002”,“HW003”同属于账户组“华为之家”。在一种可能的实现方式中,多个终端可以通过近场通信(Near Field Communication,NFC),建立一个临时账户组,多个终端可以通过扫描同一个二维码建立一个临时账户组。
[0053] 示例性的,本申请实施例中的终端可以为手机、电视,平板电脑、音箱,手表,桌面型计算机、膝上型计算机、手持计算机、笔记本电脑、超级移动个人计算机(ultra‑mobile personal computer,UMPC)、上网本,以及个人数字助理(personal digital assistant,PDA)、增强现实(Augmented reality,AR)\虚拟现实(virtual reality,VR)设备等,本申请实施例对该终端的具体类型不作特殊限制。
[0054] 通过图1所示的分布式系统,可实现基于WiFi直连的分布式调度,即家庭局域网中的多个设备可以通过WiFi连接实现互相调用彼此的功能。
[0055] 当前物联网(Internet of Things,IOT)产品多为内存在KB级别的设备,由于内存小的限制导致大多数IOT产品能力有限。例如摄像头,支持人脸采集,但是不支持人脸识别。又如手表,不具有拍照功能,因此无法直接使用手表进行拍照。由于IOT产品内存限制,为运行内存在KB级别的手表开发的应用较为手机开发的应用相比,往往具备更少的功能。
[0056] 以导航应用为例,目前为手机、电脑等大内存电子设备开发的导航应用,可以提供丰富的导航信息,参见图2所示,手机上显示的导航定位界面包括定位位置P的地图图像(图中圆球定位标识)、定位位置P所在地理区域的地图图像及导航路线图,从而,用户通过观察手机显示屏,可以直观地获取到定位信息和行进路线信息。而IOT设备由于难以运行基于电子地图的导航应用,因而其能够提供的导航定位信息有限。
[0057] 图3(a)示出了一种手表01(图中仅示出了手表01的表体背面),手表01通过振动马达来提供导向功能。参考图3(a),手表01的底盘上设有两个振动马达(分别为马达01a和马达01b),通过控制不同的马达振动,手表01可以发出不同的导向指示信息。例如,控制马达01a和位马达01b先后振动各振动一次,手表01发出左转的导向指示信息。通过该技术方案提供的手表01,用户仅可以获得简单的导向信息,但用户无法得知当前位置的定位信息以及导航路线信息,易用性差。
[0058] 图3(b)示出了另一种手表02(图中仅示出了手表02的表体正面),用户使用手表02打开导航应用的导航功能后,手表02以图像的形式显示导航定位信息。参考图3(b),手表02的显示屏上显示有方向箭头、道路名称、目的地距离等导航定位信息,从而可以为用户提供一定的导向定位功能。但是,该技术方案中,手表02显示的内容比较简单,因而提供给用户的信息量有限,且不够美观。
[0059] 除此之外,当前IOT产品大多只支持蓝牙通信,不支持WiFi连接。即使IOT产品支持WiFi功能,要实现IOT产品与其他设备的服务调度,需要IOT产品与分布式系统中其他设备进行数据库中的内容同步,以保存分布式系统中各设备支持的分布式服务(即该服务可以被其他设备调用)的服务信息。例如分布式服务信息可以包括该分布式服务的标识信息以及该分布式服务所处设备的设备标识,该分布式服务的标识信息可以包括分布式服务的服务名称和/或IP地址(Internet Protocol Address,IP Address)。
[0060] 但由于轻量级设备内存等原因限制,保存分布式系统中的分布式服务的服务信息内存开销大,因此,该方案并不适用于IOT产品。如此,当前IOT产品能力受到很大限制,影响用户体验。
[0061] 由于现在家庭中通常包含多个终端设备,如电视、多个手机、平板电脑、智能手表等,虽然轻量级手表上安装的应用能力有限,但是手机、平板电脑等设备上可以安装具有完整功能的应用,一种可行的方案中,可以通过手表调用手机或平板电脑上的应用服务,进而提升轻量级设备的应用服务能力,提升用户体验。
[0062] 为实现设备间的服务调度,首先需建立设备间的连接,参见图4为现有方案中的一种设备间建立连接的方法流程图。图中以手机和手表建立连接的过程为例进行说明,具体流程如下:
[0063] 1、手机侧下载并安装App,如运动健康App,该App用于手机和手表建立连接。
[0064] 2、用户打开运动健康App,根据弹框提示开启App相关权限,然后点击设备>添加设备>手表。
[0065] 3、用户点击“开始配对”(步骤401),手机自动搜索周围的蓝牙设备并列出设备名称;
[0066] 具体的,手机应用层会向系统层的通信模块一发送开启蓝牙扫描的请求(步骤402),手机侧通信模块一会开启蓝牙扫描,并在接收到其他设备的蓝牙广播后,与搜索到的蓝牙设备建立连接。示例性的,手机搜索到待配对手表的蓝牙广播,并与带配对手表建立蓝牙连接(步骤403)。手机侧通信模块一向应用层返回蓝牙搜索结果(步骤404)。运动健康APP可以以设备列表的形式显示通信模块搜索到的蓝牙设备(步骤405)。其中运动健康APP也可以基于预定义的筛选机制,例如进行设备名过滤,只显示与手机同厂商生产的手表设备列表。示例性的,待配对的手表的设备名为“HUAWEI WATCH GT”。
[0067] 4、用户点击手表的蓝牙名称,手表和手机自动开始配对。
[0068] 具体的,用户可以点击手机界面设备列表中设备名为“HUAWEI WATCH GT”的待配对设备(步骤406),然后手机侧应用层向手表侧应用层发送配对请求(步骤407),具体可通过手机和手表已建立的蓝牙连接通过发送该配对请求,该配对请求可用于手机和手表的连接参数协商(如通信参数:最大传输单元(Maximum Transmission Unit,MTU))、手表的设备状态查询(如手表是否已配对过等)、手机和手表的接入合法验证(用于密钥协商,确保数据安全传输)、以及手表的服务能力协商(如查询手表支持的设备能力)等多个过程的信息鉴权。
[0069] 5、手表侧接收到手机侧发送的配对请求后,手表屏幕上出现提示信息,“接收”或“拒接”配对(步骤408),用户点击“接收”,手表侧向手机侧发送接收配对的请求响应(步骤410)。
[0070] 6、手机侧接收到手表侧发送的接受配对的请求响应后,在手机屏幕上显示提示信息,提示用户“配对”或“取消”配对(步骤411);用户点击“配对”后(步骤412),完成手机和手表的配对连接。
[0071] 如上所述,现有方案中手机和手表建立连接时,需要通过手机上安装特定APP,并通过用户在手机和手表上做一系列的操作,才能完成,配对过程相对复杂。
[0072] 为解决IOT设备应用能力有限的问题,本申请提出一种基于代理模式的主从式分布式调度方法。通过本申请的方法,基于主设备代理,可以实现主设备和从设备之间服务的互相调用。例如,在手机和手表互联的情况下,用户可以实现一键将手表上的导航服务切换到手机或车机上,从而方便用户在开会过程中看到更丰富详细的导航路况信息。又例如,用户在骑行过程中,可以通过手机上的导航应用规划好骑行路线,通过开启手表辅助导航,方便用户在手表上查看导航信息和接收通知提醒,达到手机和手表协同互助。再例如,在手表和平板互联的情况下,可通过手表调用平板摄像头,进行拍照。本申请提供的方案,可以在IOT设备存储能力有限的情况下,提升IOT设备的设备能力,以达到资源共享,终端设备间的能力互补的效果,进而提升用户体验。并且,通过本申请提出的系统架构,主从设备之间配对连接的过程不需要在主设备上安装APP,也不需要用户做过多的操作,主从设备之间的配对连接更简单方便。
[0073] 下面介绍本申请实施例涉及的终端。
[0074] 示例性的,图5示出了电子设备100的结构示意图。
[0075] 下面以终端100为例对实施例进行具体说明。应该理解的是,图5所示终端100仅是一个范例,并且终端100可以具有比图5中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器180A,陀螺仪传感器180B,气压传感器180C,磁传感器180D,加速度传感器180E,距离传感器180F,接近光传感器180G,指纹传感器180H,温度传感器180J,触摸传感器180K,环境光传感器180L,骨传导传感器180M等。
[0076] 可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0077] 处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processing unit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural‑network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
[0078] 其中,控制器可以是电子设备100的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0079] 处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
[0080] 在一些实施例中,处理器110可以包括一个或多个接口。接口可以包括集成电路(inter‑integrated circuit,I2C)接口,集成电路内置音频(inter‑integrated circuit sound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general‑purpose input/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
[0081] I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K,充电器,闪光灯,摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现电子设备100的触摸功能。
[0082] I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
[0083] PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM总线接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
[0084] UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
[0085] MIPI接口可以被用于连接处理器110与显示屏194,摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI),显示屏串行接口(display serial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现电子设备100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现电子设备100的显示功能。
[0086] GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号,也可被配置为数据信号。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194,无线通信模块160,音频模块170,传感器模块180等。GPIO接口还可以被配置为I2C接口,I2S接口,UART接口,MIPI接口等。
[0087] USB接口130是符合USB标准规范的接口,具体可以是Mini USB接口,Micro USB接口,USB Type C接口等。USB接口130可以用于连接充电器为电子设备100充电,也可以用于电子设备100与外围设备之间传输数据。也可以用于连接耳机,通过耳机播放音频。该接口还可以用于连接其他电子设备,例如AR设备等。
[0088] 可以理解的是,本申请实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对电子设备100的结构限定。在本申请另一些实施例中,电子设备100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0089] 充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
[0090] 电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,外部存储器,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量,电池循环次数,电池健康状态(漏电,阻抗)等参数。在其他一些实施例中,电源管理模块141也可以设置于处理器110中。在另一些实施例中,电源管理模块141和充电管理模块140也可以设置于同一个器件中。
[0091] 电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
[0092] 天线1和天线2用于发射和接收电磁波信号。电子设备100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
[0093] 移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块150还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
[0094] 调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器170A,受话器170B等)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
[0095] 无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wireless local area networks,WLAN)(如无线保真(wireless fidelity,Wi‑Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
[0096] 在一些实施例中,电子设备100的天线1和移动通信模块150耦合,天线2和无线通信模块160耦合,使得电子设备100可以通过无线通信技术与网络以及其他设备通信。所述无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code division multiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time‑division code division multiple access,TD‑SCDMA),长期演进(long term evolution,LTE),第五代无线通信系统(5G,the 5th Generation of wireless communication system),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。所述GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(global navigation satellite system,GLONASS),北斗卫星导航系统(beidou navigation satellite system,BDS),准天顶卫星系统(quasi‑zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
[0097] 电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
[0098] 显示屏194用于显示图像,视频等。显示屏194包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,LCD),有机发光二极管(organic light‑emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active‑matrix organic light emitting diode的,AMOLED),柔性发光二极管(flex light‑emitting diode,FLED),Miniled,MicroLed,Micro‑oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。在一些实施例中,电子设备100可以包括1个或N个显示屏194,N为大于1的正整数。
[0099] 电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
[0100] ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP还可以对图像的噪点,亮度,肤色进行算法优化。ISP还可以对拍摄场景的曝光,色温等参数优化。在一些实施例中,ISP可以设置在摄像头193中。
[0101] 摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal‑oxide‑semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的RGB,YUV等格式的图像信号。在一些实施例中,电子设备100可以包括1个或N个摄像头193,N为大于1的正整数。
[0102] 数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当电子设备100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
[0103] 视频编解码器用于对数字视频压缩或解压缩。电子设备100可以支持一种或多种视频编解码器。这样,电子设备100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1,MPEG2,MPEG3,MPEG4等。
[0104] NPU为神经网络(neural‑network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现电子设备100的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
[0105] 外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
[0106] 内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器110通过运行存储在内部存储器121的指令,从而执行电子设备100的各种功能应用以及数据处理。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。
[0107] 电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
[0108] 音频模块170用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170可以设置于处理器110中,或将音频模块170的部分功能模块设置于处理器110中。
[0109] 扬声器170A,也称“喇叭”,用于将音频电信号转换为声音信号。电子设备100可以通过扬声器170A收听音乐,或收听免提通话。
[0110] 受话器170B,也称“听筒”,用于将音频电信号转换成声音信号。当电子设备100接听电话或语音信息时,可以通过将受话器170B靠近人耳接听语音。
[0111] 麦克风170C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。当拨打电话或发送语音信息时,用户可以通过人嘴靠近麦克风170C发声,将声音信号输入到麦克风170C。电子设备100可以设置至少一个麦克风170C。在另一些实施例中,电子设备100可以设置两个麦克风170C,除了采集声音信号,还可以实现降噪功能。在另一些实施例中,电子设备100还可以设置三个,四个或更多麦克风170C,实现采集声音信号,降噪,还可以识别声音来源,实现定向录音功能等。
[0112] 耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动电子设备平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
[0113] 压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,如电阻式压力传感器,电感式压力传感器,电容式压力传感器等。电容式压力传感器可以是包括至少两个具有导电材料的平行板。当有力作用于压力传感器180A,电极之间的电容改变。电子设备100根据电容的变化确定压力的强度。当有触摸操作作用于显示屏194,电子设备100根据压力传感器180A检测所述触摸操作强度。电子设备100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当有触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令。当有触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
[0114] 陀螺仪传感器180B可以用于确定电子设备100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定电子设备100围绕三个轴(即,x,y和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。示例性的,当按下快门,陀螺仪传感器180B检测电子设备100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消电子设备100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航,体感游戏场景。
[0115] 气压传感器180C用于测量气压。在一些实施例中,电子设备100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
[0116] 磁传感器180D包括霍尔传感器。电子设备100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当电子设备100是翻盖机时,电子设备100可以根据磁传感器180D检测翻盖的开合。进而根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
[0117] 加速度传感器180E可检测电子设备100在各个方向上(一般为三轴)加速度的大小。当电子设备100静止时可检测出重力的大小及方向。还可以用于识别电子设备姿态,应用于横竖屏切换,计步器等应用。
[0118] 距离传感器180F,用于测量距离。电子设备100可以通过红外或激光测量距离。在一些实施例中,拍摄场景,电子设备100可以利用距离传感器180F测距以实现快速对焦。
[0119] 接近光传感器180G可以包括例如发光二极管(LED)和光检测器,例如光电二极管。发光二极管可以是红外发光二极管。电子设备100通过发光二极管向外发射红外光。电子设备100使用光电二极管检测来自附近物体的红外反射光。当检测到充分的反射光时,可以确定电子设备100附近有物体。当检测到不充分的反射光时,电子设备100可以确定电子设备
100附近没有物体。电子设备100可以利用接近光传感器180G检测用户手持电子设备100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式,口袋模式自动解锁与锁屏。
[0120] 环境光传感器180L用于感知环境光亮度。电子设备100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测电子设备100是否在口袋里,以防误触。
[0121] 指纹传感器180H用于采集指纹。电子设备100可以利用采集的指纹特性实现指纹解锁,访问应用锁,指纹拍照,指纹接听来电等。
[0122] 温度传感器180J用于检测温度。在一些实施例中,电子设备100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,电子设备100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,电子设备100对电池142加热,以避免低温导致电子设备100异常关机。在其他一些实施例中,当温度低于又一阈值时,电子设备100对电池
142的输出电压执行升压,以避免低温导致的异常关机。
[0123] 触摸传感器180K,也称“触控面板”。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,也称“触控屏”。触摸传感器180K用于检测作用于其上或附近的触摸操作。触摸传感器可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于电子设备100的表面,与显示屏194所处的位置不同。
[0124] 骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
[0125] 按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
[0126] 马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。例如,作用于不同应用(例如拍照,音频播放等)的触摸操作,可以对应不同的振动反馈效果。作用于显示屏194不同区域的触摸操作,马达191也可对应不同的振动反馈效果。不同的应用场景(例如:时间提醒,接收信息,闹钟,游戏等)也可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
[0127] 指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。
[0128] SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。电子设备100可以支持1个或N个SIM卡接口,N为大于1的正整数。SIM卡接口195可以支持Nano SIM卡,Micro SIM卡,SIM卡等。同一个SIM卡接口195可以同时插入多张卡。所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容不同类型的SIM卡。SIM卡接口195也可以兼容外部存储卡。电子设备100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,电子设备100采用eSIM,即:嵌入式SIM卡。eSIM卡可以嵌在电子设备100中,不能和电子设备100分离。
[0129] 电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本申请实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
[0130] 图6是本申请实施例的电子设备100的软件结构框图。分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。应用程序层可以包括一系列应用程序包。
[0131] 如图6所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,游戏,购物,短信息,设备控制等应用程序。
[0132] 应用程序框架层为应用程序层的应用程序提供应用编程接口(application programming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
[0133] 如图6所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器等。
[0134] 窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
[0135] 内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
[0136] 视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
[0137] 电话管理器用于提供电子设备100的通信功能。例如通话状态的管理(包括接通,挂断等)。
[0138] 资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
[0139] 通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
[0140] Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
[0141] 核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
[0142] 应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
[0143] 系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
[0144] 表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
[0145] 媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
[0146] 三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
[0147] 2D图形引擎是2D绘图的绘图引擎。
[0148] 系统层还包括分布式系统服务管理模块,分布式调度服务模块,元能力管理模块,包管理服务模块,通信模块。
[0149] 该分布式系统服务管理模块,可用于提供服务注册和发现的能力,发现与注册终端上的服务。
[0150] 该分布式调度服务模块,可用于管理分布式系统中设备间系统服务(system ability,SA)调用和设备间应用启动的服务。
[0151] 该元能力管理模块,可用于ability(即FA和/或AA)的运行管理,可以包括ability实例栈的管理、ability生命周期的调度,窗口管理器(Window Manager)管理交互等。
[0152] 该包管理服务模块,可用于各种资源包(如bundle)的安装,卸载,优化和查询等管理。
[0153] 该通信模块,可用于提供跨设备的通信能力,跨进程的通信能力和跨设备传递对象的能力。
[0154] 内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。该内核层是操作系统的内部核心程序,可用于向外部提供终端设备的核心管理调用。其中,操作系统的代码可以分成多个部分。内核所在的地址空间可称作内核空间。
[0155] 下面,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
[0156] 1、分布式网络(Distributed Network,DN):由分布在不同地点的多个终端互连而成,分布式网络中的任意两个设备可实现网络通讯。具体的,应用于本申请中的分布式网络可以包括但不限于搭载了鸿蒙操作系统的设备组成的网络。本申请中的分布式网络也可以是由搭载了Android操作系统、Windows操作系统或IOS操作系统的设备组成的网络。
[0157] 2、分布式系统服务管理(system ability manager,SAMGR),可用于提供服务注册和发现的能力,发现与注册终端上的服务。
[0158] 3、分布式调度服务(Distributed Scheduling Service,DMS):用于管理分布式系统中设备间系统服务(system ability,SA)调用和设备间应用启动的服务。
[0159] 4、元能力管理服务(ability manager service,AMS):主要负责ability(即FA和/或AA)的运行管理,可以包括ability实例栈的管理、ability生命周期的调度,窗口管理器(Window Manager)管理交互等。
[0160] 5、包管理服务(bundle manager service,BMS):主要负责各种资源包(如bundle)的安装,卸载,优化和查询等管理。
[0161] 6、元能力(atomic ability,AA):由开发人员开发,是实现单一功能的程序实体,无用户界面(user interface,UI)。且AA与系统服务(system service)存在依赖关系,AA之间不存在依赖关系。其中,系统服务可以包括但不限于:时钟服务(RTC)、连接管理器(WIFI、GSM调制解调器)、定位(GPS)、电源(PMIC)、传感器、通信(GSM调制解调器、WIFI、蓝牙)。
[0162] 7、特性能力(feature ability,FA):是通过调用AA和/或FA实现用户特性功能的程序实体。
[0163] 8、主设备:具有从设备代理模块,用于和从设备配对的设备,由于从设备内存和硬件能力的限制,由主设备代理从设备进行分布式调度,也可称作代理设备。本申请对主设备的具体形式不作限定,可以是手机、平板等,主设备可以是具有图5和图6的软硬件结构的电子设备。
[0164] 9、从设备:可通过主设备代理,实现和主设备互相调用。本申请中的从设备为轻量级设备,轻量级设备为程序运行时可用内存较少的设备,例如,可用内存为KB级别的设备。在此基础上,本申请对轻量级设备的具体形式不作限定,例如,智能手环/手表、眼镜、掌上游戏机、对讲机、位置追踪器等。
[0165] 10、远程过程调用(Romote Procedure Call,RPC):两个设备之间的通信方式,允许运行于一台设备的程序调用另一个地址空间(分布式网络中的另一设备)的子程序。
[0166] 接下来,对本申请的系统架构进行介绍。本申请系统架构如图7所示,涉及第一设备(主设备)、第二设备(从设备)。图7所示,主设备和从设备可通过通信模块进行通信连接,具体的可以是蓝牙连接。
[0167] 其中,主设备中安装有第一应用,主设备中包括分布式系统服务管理模块(第一SAMGR)、元能力管理服务模块(第一AMS)、包管理服务模块(第一BMS),分布式调度服务模块(第一DMS)和第一通信模块。
[0168] 从设备中安装有第二应用,从设备中包括第二SAMGR,第二DMS,第二AMS,第二BMS和第二通信模块。
[0169] 其中第一应用和第二应用,如由同一个开发厂商开发的导航应用,第一应用和第二应用具有相同的公钥签名,具有相同的包名和APP ID。
[0170] 当设备开机时,启动DMS、AMS、BMS服务,然后注册相应服务到SAMGR模块中,用于被其他服务调用。
[0171] DMS启动后会向通信模块注册设备上下线的回调函数,用于通信模块向DMS发送设备上下线信息。
[0172] 主设备中第一DMS启动后会向第一通信模块注册设备上下线的回调函数,用于第一通信模块与从设备建立连接后,第一通信模块可通过上线接口向第一DMS发送从设备的上线信息,上线信息中包括从设备的设备名称,设备ID(设备的唯一标识),设备类型(用于标识设备品类),设备IP(用于通信);以及用于当第一通信模块与从设备断开连接后,第一通信模块可通过下线接口向第一DMS发送从设备下线信息,下线信息中包括从设备的设备名称,设备ID(一个设备的唯一标识),设备类型(用于标识设备品类),设备IP(用于通信)。
[0173] 第一DMS中包括第一设备管理模块,当第一DMS收到从设备的上线通知消息后,会保存从设备的设备名称,设备ID、设备类型和设备IP等信息到第一DMS的第一设备管理模块中。
[0174] 第一DMS收到从设备的下线通知消息后,会移除第一设备管理模块存储的从设备的设备名称,设备ID、设备类型和设备IP等信息。
[0175] 上述模块功能同样适用于从设备中的第二SAMGR,第二DMS,第二AMS和第二BMS。
[0176] 进一步的,第一DMS中还包括从设备代理模块,用于接收从设备的调用服务请求或向从设备发送调用服务请求,并在解析请求后响应调用服务请求的功能。
[0177] 第一通信模块、第二通信模块:用于主从设备之间的通信。
[0178] 两个设备之间进行服务调用,一种实现方式中可以通过第一类型的RPC机制进行设备间通信,具体可以通过接口定义语言(Interface Definition Language,IDL)定义的一套接口,并通过接口参数发送数据。而一个服务调度过程需要经过查询、启动、发送数据等多个步骤,每个步骤都需要不同的接口发送数据。
[0179] 通过接口实现RPC技术实现较复杂,需要调用的库函数较多,例如需要调用ipc_thread_skeleton.h,ipc_process_skeleton.h,ipc_skeleton.h,ipc_workthread.h,ipc_thread_skeleton.h,ipc_process_skeleton.h等用于通信,调用ashmem.h用于共享内存映射,调用securec.h用于基本字符处理,调用sys/mman.h用于内存管理,初次之外还需要调用很多库函数,因此占用内存较大,一般在10M级别。对于IOT设备而言,由于内存限制,增加接口会对设备性能有较大影响。
[0180] 本申请中,第一设备和第二设备之间的服务调用是第二类型的RPC机制,通过消息协议进行主从设备之间的数据传输,运行内存在KB级。具体的,第二类型的RPC机制的消息格式可由表一所示服务描述协议字段构成,包括Command  ID、Device  ID、CallerSignature、CalleeBundleName、CalleeAbilityName和DataPayLoad。
[0181] 表一
[0182]
[0183] 具体的,各字段含义如表二所示:
[0184] 表二
[0185]
[0186]
[0187] 其中,
[0188] Command ID表示命令ID,具体地,
[0189] Command ID为0x01,用于表示探测calleeBundleName所对应的目标应用是否已安装的命令;
[0190] Command ID为0x02,用于绑定服务,启动目标设备的目标应用的命令;
[0191] Command ID为0x03,用于表示调用目标设备的目标服务的命令;
[0192] Command ID为0x04,用于表示发送数据的命令。
[0193] 该字段为固定长度1oct,即8bit,必选字段。
[0194] callerSignature:发送命令的源APP的公钥信息,保存在应用的签名文件中,用于应用鉴权。该字段为可变长度,最大长度为255oct,为必选字段。calleeBundleName:接收命名的目标APP包名。该字段为可变长度,最大长度为255oct,为必选字段。
[0195] calleeAbilityName:接收命名的目标APP的指定界面。该字段为可变长度,最大长度为255oct,为必选字段。
[0196] DataPayLoad:根据Command ID的不同对应填充不同的内容。当Command ID为0x01和0x02时,无需填充此字段,因为0x01和0x02是控制命令,无数据传输;当Command ID为0x03时,需要填充启动的服务类名和函数名;当Command ID为0x04时,需要填充待传输的数据。该字段为可变长度,内容上限可以为32kb,包含上述字段占用的字节(即Command ID,callerSignature,calleeBundleName和calleeAbilityName占用字节的总和),为可选字段。也可以不限长度。
[0197] 接下来,以第一设备(主设备)为手机,第二设备(从设备)为手表,对本申请通过主设备代理服务,实现主设备和从设备之间的服务调度的流程进行说明。本实施例中,以通过手机启动手表的导航服务为例进行说明。
[0198] 参见图8所示,第一设备和第二设备之间建立通信连接。具体的,手机和手表初次绑定流程可以为:手机和手表建立蓝牙连接或处于同一局域网中;当手机发现手表后,可以手机界面上弹出提示框,提示用户进行手表绑定,如图11所示,用户在手机上点击“绑定”后,基于第一通信模块和第二通信模块的跨设备通信能力,完成第一设备和第二设备配对鉴权过程,实现手机和手表的绑定。绑定成功后,可以在手机上显示“绑定成功”等提示信息,用于提示用户此时手机和手表绑定完成。如此,手机上不需要下载特定APP即可完成手机和手表的绑定。
[0199] 在第一设备和第二设备建立通信连接后,第一设备中的第一DMS通过第一通信模块收到第二设备的上线通知消息,该上线通知消息中携带有从设备的设备ID、设备名称、设备类型、设备IP等信息,并将从设备的设备ID、设备名称、设备类型、设备IP等信息存储在设备管理模块中。
[0200] 本实施例中,用户可以在骑行过程中,通过手机启动手表的导航服务,方便用户使用,具体步骤如下:
[0201] 步骤701:第一应用接收用户开启导航互助功能的操作。
[0202] 具体的,参见图12,用户可以打开手机的导航应用,并在导航应用中规划好骑行路线,然后点击导航互助控件1001。示例性的,开启导航互助功能的方式可以有多种,如用户单击、双击或多次点击导航互助控件1001,也可以通过语音命令开启导航互助功能,例如用户可以说“开启导航互助”,第一设备在识别用户语义后,自动开启导航互助功能。也可以是由第一设备在接收到的用户的语音输入后,将用户输入的语音信息发送给云端,由云端完成语音识别,第一设备可根据云端返回的语音识别结果,决定是否开启导航。用户也可以通过特定手势开启导航互助功能,本申请不予限定。
[0203] 步骤702:响应于用户开启第一应用中的导航互助功能的操作,第一应用向从设备代理模块发送第三请求,该第三请求用于探测目标应用是否安装。
[0204] 具体的,第一应用可以通过ping接口(第二接口)向从设备代理模块发送第三请求,该第三请求中携带有目标设备(即从设备)的设备ID,目标应用的包名(bundle name)、界面名(ability name)等信息。
[0205] 其中,第一应用可以通过不同的接口向从设备代理模块发送不同的请求,不同接口与不同的命令请求之间具有一一对应关系。例如,ping接口(第二接口)用于发送探测目标应用是否安装的请求,对应command ID为0x01;startability接口(第一接口)用于发送启动目标应用的界面的请求,对应command ID为0x02;sendmessage接口(第三接口)用于发送数据,对应command ID为0x04。
[0206] 步骤703:从设备代理模块接收到第一应用发送的探测目标应用是否安装的请求(第三请求)后,向设备管理模块发送第三查询请求,该第三查询请求用于查询目标设备是否在线,该第三查询请求中携带有目标设备的设备ID。
[0207] 步骤704:设备管理模块会根据目标设备的设备ID,以及设备管理模块中存储的设备上下信息,判断目标设备是否在线。如果管理模块中存储有该目标设备的设备ID,则执行步骤705;如果管理模块中未存储有该目标设备的设备ID,则设备管理模块向从设备代理模块发送目标设备不在线的请求响应,接着,从设备代理模块向第一应用发送目标设备不在线的消息,第一应用收到目标设备不在线的消息后,提示用户导航互助功能开启失败。具体的,可在第一设备显示界面上显示提示消息,如“导航互助功能”开启失败,或者导航互助控件颜色可保持不变,表示“导航互助功能”未开启。其中,目标设备不在线的情况未在图7中体现。
[0208] 步骤705:设备管理模块向从设备代理模块发送目标设备在线的第三查询响应。此后执行步骤706。
[0209] 步骤706:从设备代理模块向第一BMS发送第四查询请求,该第四查询请求用于查询第一应用的公钥信息,具体的,从设备代理模块可查询到第一应用的包名bundle name,并在该第四查询请求中携带有第一应用的包名。
[0210] 当第一设备安装第一应用时,第一BMS会获取第一应用的bundle name和公钥信息,并生成第一APP ID存储在第一BMS里面,其中,第一APP ID可以是“bundle name_公钥信息”的形式。第一BMS收到从设备代理模块发送的携带有第一应用的包名的查询请求后,根据第一应用的包名,可以查询得到第一应用对应的第一APP ID,然后得到第一应用的公钥信息。
[0211] 步骤707:第一BMS向从设备管理模块发送第四查询响应,该第四查询响应中携带有第一应用的公钥信息。
[0212] 步骤708:从设备代理模块按照预定格式对请求消息中携带的信息进行规范。具体地,从设备代理模块可根据第一应用发送查询请求的接口为ping接口,得到该次请求的第二命令ID为0X01,即探测目标应用是否已安装。从设备代理模块可对第二command ID,第一应用的公钥信息,以及第一应用发送的探测请求中携带的目标应用的包名(bundle name)、界面名(ability name)按照预定格式进行规范处理,处理后可如表三所示,由于该次命令无数据传输,因此DataPayLoad字段为空。
[0213] 表三
[0214]字段名称 说明
Command ID 0x01:探测目标应用是否已安装
callerSignature 第一应用的公钥信息
calleeBundleName 目标应用的包名:com.huawei.hiworld.higo
calleeAbilityName 目标应用的界面名称:MainAbilityShellActivity
DataPayLoad NA
[0215] 709:从设备代理模块向第二设备的第二DMS发送第四请求,该第四请求中携带有第二命令ID、第一应用的公钥信息、和第一请求中携带的第二应用的包名、第二应用的界面名。
[0216] 具体的,第一设备可通过第一RPC机制,向第二设备发送第四请求。该第一RPC为第二类型的RPC。
[0217] 710:第二DMS接收到该第四请求后,会对该第四请求中携带的第二请求信息进行解析。
[0218] 具体的,第二DMS会解析出该请求消息用于探测目标应用是否已安装,发送该调度请求的第一应用的公钥信息,该调度请求对应的目标应用的包名和界面名,以及该请求消息中携带的数据为空。
[0219] 711:第二DMS向第二BMS发送第八查询请求,该第八查询请求用于查询目标应用对应的应用ID(APP ID)。具体的,该第八查询请求中携带有第二设备的bundle name。
[0220] 712:第二BMS根据第二DMS发送的第八查询请求中携带的目标应用的bundle name,查询第二BMS中是否存储有该bundle name对应的APP ID。
[0221] 具体的,当第二设备安装第二应用时,第二BMS会获取第二应用的bundle name和公钥信息,并生成APP ID存储在第二BMS里面,其中,APP ID可以是“bundle name_公钥信息”的形式。
[0222] 若第二设备中已安装目标应用,当第二BMS收到第二DMS发送的目标应用的bundle name,即可找到该目标应用的bundle name对应的APP ID,则执行步骤711;若第二设备中未安装目标应用,则第二BMS中没有该目标应用的bundle name对应的APP ID,因此向第二DMS返回空命令。
[0223] 713:第二BMS向第二DMS发送第八查询响应,该第八查询响应中携带有目标应用的APP ID。
[0224] 714:第二DMS进行应用鉴权,判断之前解析出的第一应用的公钥信息与第二BMS发送的目标应用的APP ID中携带的公钥信息是否一致。若一致,说明第一设备中安装的第一应用和第二设备中安装的目标应用是由同一厂商开发的,则应用鉴权成功,执行715。若第二BMS返回的是空命令,则说明第二设备未安装目标应用,或者第二DMS判断之前解析出的第一应用的公钥信息与第二BMS发送的目标应用的APP ID中携带的公钥信息不一致,说明第一设备中安装的第一应用和第二设备中安装的目标应用不是由同一厂商开发的,则应用鉴权失败。第二DMS向第一设备的从设备代理模块返回校验失败,第一应用的导航互助功能开启失败。具体的,可在第一设备显示界面上显示提示消息,如“导航互助功能”开启失败,或者导航互助控件颜色可保持不变,表示“导航互助功能”未开启。其中,应用鉴权失败的情况未在图7中体现。
[0225] 715:第二DMS向第一应用发送第四请求响应,该第四请求响应用于指示目标应用已安装。
[0226] 716:第一应用开启导航互助功能。具体地,如图13所示,第一应用中的导航互助控件可高亮显示,导航互助控件的颜色可以不同于之前,用于提示用户导航互助功能已开启。或者第一设备可以通过语音播报,提示用户导航互助功能已开启。
[0227] 在导航互助功能被开启后,用户可以在手机上点击“开始导航”,通过主设备可启动从设备上的导航应用,在启动从设备的导航界面后,向从设备发送导航数据,以使得从设备可以显示导航提示信息。具体步骤如图9和图10所示。
[0228] 参见图8,为用户点击开始导航后,主设备启动从设备的第二应用的过程。
[0229] 801:第一设备的第一应用接收用户点击“开始导航”控件的操作。
[0230] 具体的参见图14,用户可以点击“开始导航”控件1201。示例性的,用户也可以通过语音方式开启导航,例如用户说“开始导航”,第一设备在识别用户语义后,自动开始导航。也可以是由第一设备在接收到的用户的语音输入后,将用户输入的语音信息发送给云端,由云端完成语音识别,第一设备可根据云端返回的语音识别结果,决定是否开启导航。示例性的,用户也可以通过特定手势开始导航,本申请不予限定。
[0231] 802:第一应用响应于用户点击“开始导航”控件的操作,第一应用开始导航,并向从设备代理模块发送第一请求,该第一请求用于启动从设备导航界面。
[0232] 具体的,第一应用可以通过startability接口(第一接口),向从设备代理模块发送用于启动从设备导航界面的请求(第一请求),该第一请求中携带有目标设备(从设备)的设备ID,目标应用的包名(bundle name)、界面名(ability name)等信息。
[0233] 803:从设备代理模块接收到第一应用发送的用于启动从设备导航界面的请求后,从设备代理模块向设备管理模块发送第一查询请求,该第一查询请求用于查询目标设备是否在线,该查询请求中携带有目标设备的设备ID。
[0234] 为确保从设备的导航应用顺利启动,每当从设备代理模块收到主设备的服务调度请求时,都会向设备管理模块确认此时从设备是否在线。
[0235] 步骤804:设备管理模块会根据目标设备的设备ID,以及之前存储的设备上下信息,判断目标设备是否在线。此处以设备管理模块判断此时目标设备在线为例进行说明。
[0236] 步骤805:设备管理模块向从设备代理模块发送第一查询响应,该第一查询响应用于指示目标设备在线。
[0237] 步骤806:从设备代理模块向第一BMS发送第二查询请求,该第二查询请求用于查询第一应用的公钥信息,具体的,从设备代理模块可查询到第一应用的包名bundle name,并在该第二查询请求中携带有第一应用的包名。
[0238] 当第一设备安装第一应用时,第一BMS会获取第一应用的bundle name和公钥信息,并生成第一APP ID存储在第一BMS里面,其中,第一APP ID可以是“bundle name_公钥信息”的形式。第一BMS收到从设备代理模块发送的携带有第一应用的包名的查询请求后,根据第一应用的包名,可以查询得到第一应用对应的第一APP ID,然后得到第一应用的公钥信息。
[0239] 步骤807:第一BMS向从设备管理模块发送第二查询响应,该第二查询响应中携带有第一应用的公钥信息。
[0240] 步骤808:从设备代理模块按照预定格式对请求消息中携带的信息进行规范。具体的,从设备代理模块可根据第一应用发送查询请求的接口为startability接口,得到该次请求的第一命令ID为0X02,即用于启动目标应用。从设备代理模块可对第一command ID,第一应用的公钥信息,以及第一应用发送的探测请求中携带的目标应用的包名(bundle name)、界面名(ability name)按照预定格式进行规范处理,处理后可如表四所示,由于该次命令无数据传输,因此DataPayLoad字段为空。
[0241] 表四
[0242]字段名称 说明
Command ID 0x02:启动目标应用的界面
callerSignature 第一应用的公钥信息
calleeBundleName 目标应用的包名:com.huawei.hiworld.higo
calleeAbilityName 目标应用的界面名称:MainAbilityShellActivity
DataPayLoad NA
[0243] 809:第一设备的从设备代理模块向第二设备的第二DMS发送第二请求,该第二请求中携带有第一命令ID、第一应用的公钥信息、和第一请求中携带的第二应用的包名、第二应用的界面名,该第一请求用于请求启动从设备的目标应用的第一界面。
[0244] 具体地,第一设备可以通过第二RPC机制,向第二设备发送该第二请求。该第二RPC为第二类型的RPC。
[0245] 810:第二设备的第二DMS接收到该第二请求后,会对该第二请求中携带的第一请求消息进行解析。
[0246] 具体的,第二DMS会解析出该第二请求用于启动从设备的导航界面,发送该调度请求的第一应用的公钥信息,该调度请求对应的目标应用的包名和界面名,以及该请求消息中携带的数据为空。
[0247] 为确保应用信息安全,每当第二DMS收到主设备的服务调度请求时,都会进行应用鉴权。
[0248] 811:第二DMS向第二BMS发送第七查询请求,该第七查询请求用于查询目标应用对应的应用ID(APP ID)。具体的,该第七查询请求中携带有第二设备的bundle name。
[0249] 812:第二BMS根据第二DMS发送的第七查询请求中携带的目标应用的bundle name,查询第二BMS中是否存储有该bundle name对应的APP ID。
[0250] 具体的,当第二设备安装第二应用时,第二BMS会获取第二应用的bundle name和公钥信息,并生成APP ID存储在第二BMS里面,其中,APP ID可以是“bundle name_公钥信息”的形式。
[0251] 若第二设备中已安装目标应用,当第二BMS收到第二DMS发送的目标应用的bundle name,即可找到该目标应用的bundle name对应的APP ID,则执行步骤711;若第二设备中未安装目标应用,则第二BMS中没有该目标应用的bundle name对应的APP ID,因此向第二DMS返回空命令。
[0252] 813:第二BMS向第二DMS发送第七查询响应,该第七查询响应中携带有目标应用的APP ID。
[0253] 814:第二DMS进行应用鉴权,判断之前解析出的第一应用的公钥信息与第二BMS发送的目标应用的APP ID中携带的公钥信息是否一致。若一致,说明第一设备中安装的第一应用和第二设备中安装的目标应用是由同一厂商开发的,则应用鉴权成功,执行813。若第二BMS返回的是空命令,则说明第二设备未安装目标应用,或者第二DMS判断之前解析出的第一应用的公钥信息与第二BMS发送的目标应用的APP ID中携带的公钥信息不一致,说明第一设备中安装的第一应用和第二设备中安装的目标应用不是由同一厂商开发的,则应用鉴权失败。第二DMS向第一设备的从设备代理模块返回校验失败,第一应用的导航互助功能开启失败。具体的,可在第一设备显示界面上显示提示消息,如“导航互助功能”开启失败,或者导航互助控件颜色可保持不变,表示“导航互助功能”未开启。其中,应用鉴权失败的情况未在图8中体现。
[0254] 815:第二设备的第二DMS向第二设备的第二AMS发送第七请求,该第七请求用于请求启动目标应用的第一界面。
[0255] 816:第二设备的第二AMS根据目标应用所处的生命周期确定启动目标应用的方式。
[0256] 一个应用的生命周期包括启动、前台运行和未启动等。若第二应用处于前台或是启动状态,则AMS不需要重新启动第二应用。若第二应用处于未启动状态,则AMS需启动第二应用,执行步骤815。
[0257] 817:第二AMS启动第二应用的导航界面。具体的第二AMS可以向第二应用发送携带有第二界面的ability name的启动命令
[0258] 818:显示第二应用的导航界面。
[0259] 接下来,手机侧可以不断将导航数据发送给手表侧,手表侧在接收到手机发送的导航数据后,便可显示导航信息,用于为用户导航。具体步骤如图10所述:
[0260] 步骤901:第一应用向从设备代理模块发送第五请求,该第五请求用于发送导航数据。
[0261] 具体的第二应用可通过sendmessage接口(第三接口)向从设备代理模块发送导航数据。
[0262] 步骤902:从设备代理模块接收到第一应用发送导航数据的请求后,从设备代理模块向设备管理模块发送第五查询请求,该第五查询请求用于查询目标设备是否在线,该第五查询请求中携带有目标设备的设备ID。
[0263] 为确保从设备的导航应用顺利显示导航数据,每当从设备代理模块收到主设备的服务调度请求时,都会向设备管理模块确认此时从设备是否在线。
[0264] 步骤903:设备管理模块会根据目标设备的设备ID,以及之前存储的设备上下信息,判断目标设备是否在线。此处以设备管理模块判断此时目标设备在线为例进行说明。
[0265] 步骤904:设备管理模块向从设备代理模块发送第五查询响应,该第五查询响应指示目标设备在线。
[0266] 步骤905:从设备代理模块按照预定格式对请求消息中携带的信息进行规范。在执行步骤905之前,从设备代理模块同样需执行步骤706和步骤707,即从设备代理模块向第一BMS发送第六查询请求,该第六查询请求用于查询第一应用的公钥信息,具体的,从设备代理模块可查询到第一应用的包名bundle name,并在该查询请求中携带有第一应用的包名。第一BMS在查询得到第一应用的公钥信息后,向从设备管理模块返回第六查询响应,该第六查询响应用携带有第一应用的公钥信息。然后从设备代理模块可根据第一应用发送查询请求的接口为sendmessage接口,得到该次请求的第三命令ID为0X04,即用于发送数据。从设备代理模块可对第三command ID,第一应用的公钥信息,以及第一应用发送的探测请求中携带的目标应用的包名(bundle name)、界面名(ability name)和导航数据按照预定格式进行处理,处理后可如表五所示:
[0267] 表五
[0268] 字段名称 说明Command ID 0x04:发送数据
callerSignature 第一应用的公钥信息
calleeBundleName 目标应用的包名:com.huawei.hiworld.higo
calleeAbilityName 目标应用的界面名称:MainAbilityShellActivity
DataPayLoad 导航数据
[0269] 906:第一设备的从设备代理模块向第二设备的第二DMS发送第六请求,该第六请求中携带有第三命令ID、第一应用的公钥信息、和第一请求中携带的第二应用的包名、第二应用的界面名,该第六请求中携带有导航数据。
[0270] 具体地,第一设备可以通过第三RPC机制,向第二设备发送第六请求。该第三RPC为第二类型的RPC。
[0271] 907:第二设备的第二DMS接收到第六请求后,会对该第六请求中携带的第三请求信息进行解析。
[0272] 具体的,第二DMS会解析出该第六请求用于发送导航数据,发送该调度请求的第一应用的公钥信息,该调度请求对应的目标应用的包名和界面名,以及该请求消息中携带的数据为导航数据。
[0273] 为确保应用信息安全,每当第二DMS收到主设备的服务调度请求时,都会进行应用鉴权。
[0274] 908:第二DMS向第二BMS发送第九查询请求,该第九查询请求用于查询目标应用对应的应用ID(APP ID)。具体的,该第九查询请求中携带有第二设备的bundle name。
[0275] 909:第二BMS根据第二DMS发送的第九查询请求中携带的目标应用的bundle name,查询第二BMS中是否存储有该bundle name对应的APP ID。
[0276] 具体的,当第二设备安装第二应用时,第二BMS会获取第二应用的bundle name和公钥信息,生成APP ID,并将该APP ID存储在第二BMS里面,其中,APP ID可以是“bundle name_公钥信息”的形式。
[0277] 若第二设备中已安装目标应用,当第二BMS收到第二DMS发送的目标应用的bundle name,即可找到该目标应用的bundle name对应的APP ID,则执行步骤711;若第二设备中未安装目标应用,则第二BMS中没有该目标应用的bundle name对应的APP ID,因此向第二DMS返回空命令。
[0278] 910:第二BMS向第二DMS发送第九查询响应,该第九查询响应中携带有目标应用的APP ID。
[0279] 911:第二DMS进行应用鉴权,判断之前解析出的第一应用的公钥信息与第二BMS发送的目标应用的APP ID中携带的公钥信息是否一致。若一致,说明第一设备中安装的第一应用和第二设备中安装的目标应用是由同一厂商开发的,则应用鉴权成功,执行813。若第二BMS返回的是空命令,则说明第二设备未安装目标应用,或者第二DMS判断之前解析出的第一应用的公钥信息与第二BMS发送的目标应用的APP ID中携带的公钥信息不一致,说明第一设备中安装的第一应用和第二设备中安装的目标应用不是由同一厂商开发的,则应用鉴权失败。第二DMS向第一设备的从设备代理模块返回校验失败,第一应用的导航互助功能开启失败。具体的,可在第一设备显示界面上显示提示消息,如“导航互助功能”开启失败,或者导航互助控件颜色可保持不变,表示“导航互助功能”未开启。其中,应用鉴权失败的情况未在图9中体现。
[0280] 912:第二DMS向第二AMS发送第八请求,该第八请求中携带有导航数据和目标应用的bundle name。
[0281] 913:第二AMS根据目标应用的bundle name,确定目标应用bundle name对应的应用为第二应用。
[0282] 914:第二AMS将导航数据发给第二应用。
[0283] 915:第二应用显示导航信息。
[0284] 具体的,如图15所示,此时手表和手机可同步显示导航信息。
[0285] 本申请中,也可以通过手表启动手机的导航服务,具体的,用户可以在手表上输入目的地,点击导航互助按钮,并在确认手机上安装有第一应用的情况下,开启导航互助功能。具体步骤如图16所述,具体流程与图8中通过手机启动手表导航的过程相类似。
[0286] 具体的第二DMS中包含第二设备管理模块,在步骤1303中,第二DMS接收到第一应用发送的探测第一应用是否安装的请求后,可根据请求消息中携带的目标设备的设备ID,以及第二设备管理模块中存储设备上下信息,判断目标设备是否在线。并在确认目标设备在线的情况下,按照服务描述协议信息的格式对请求消息中携带的信息进行序列化规范。
[0287] 步骤1306中,第一DMS中的从设备代理模块接收到第二DMS发送的序列化规范后的请求消息后,对该序列化规范后的请求消息进行解析,并进行应用鉴权(步骤1310)。在应用鉴权成功的情况下,向第二应用发送第一应用已安装的消息(步骤1311)。
[0288] 接着,第二应用可主动请求启动主设备的导航界面,具体步骤参见图17,此处与图9中通过手机启动手表导航界面中的步骤类似,不再赘述。
[0289] 然后手表侧可以将导航数据发送给手机侧,用于手机侧显示导航信息。与图10所示的手机发送导航数据给手表的不同在于,本实施例中手表侧只需要将目的地信息发送给手机,从而实现将手表导航迁移到手机上,由于手机性能较手表更优,手机在收到目的地信息后,可对路线进行重新规划,并在手机上为用户显示导航信息。具体步骤参见图18所示。