一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

传感器注册方法、控制系统及相关设备与流程

2022-09-02 22:43:12 来源:中国专利 TAG:

传感器注册方法、控制系统及相关设备
1.本技术要求于2021年10月30日提交中国国家知识产权局、申请号为202111278417.0、申请名称为“传感器的动态注册方法、装置、存储介质及控制系统”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术涉及计算机技术领域,尤其涉及一种传感器注册方法、控制系统及相关设备。


背景技术:

3.随着计算机技术的发展,终端的屏幕越来越大。大屏终端可以用于会议、娱乐、教学等多种场景。大屏终端在生产过程中,由于屏幕尺寸较大、不便于移动,不会为大屏终端配备相关的传感器等硬件,例如,大屏终端中不会配备陀螺仪、重力传感器、加速度传感器等静态传感器。
4.以基于安卓(android)系统的大屏终端为例,大屏终端在启动时,安卓操作系统会在框架层(framework)创建系统进程服务(systemserver),然后,传感器设备(sensordevice)会将安卓操作系统所支持的传感器注册到框架层的sensordevice类中,以便于后续从sensordevice类中查询或调用所注册的传感器。例如,将安卓操作系统支持的陀螺仪、重力传感器和加速度传感器注册到sensordevice类中。
5.然而,由于大屏终端上没有配备陀螺仪、重力传感器和加速度传感器的硬件,安卓操作系统将无法读取到相关传感器的数据。如此,大屏终端在运行相关应用(application),例如游戏应用时,会导致应用无法正常运行,甚至闪退。


技术实现要素:

6.本技术的目的在于:提供一种传感器注册方法、控制系统及相关设备,使得相关应用能够正常运行,减少闪退的情况。
7.第一方面,本技术提供了一种传感器注册方法,应用于第一电子设备,该第一电子设备可以是大屏终端,例如可以是智慧屏,在大屏终端上运行有操作系统,例如可以是安卓操作系统,大屏终端的操作系统包括框架层、硬件抽象层和内核层。该方法包括:
8.第二电子设备向第一电子设备发送连接请求,第一电子设备基于该连接请求,将第一电子设备的界面投屏到第二电子设备;然后用户可以通过第二电子设备针对预设应用(例如可以是重力感应类游戏)触发启动操作,第二电子设备基于该启动操作向第一电子设备发送针对预设应用的启动请求,第一电子设备接收到该启动请求后,基于该启动请求,启动预设应用;接着,第一电子设备根据与该预设应用对应的目标传感器的配置信息,配置硬件抽象层的第一传感器列表,其中,该第一电子设备未配置目标传感器的硬件,第二电子设备配备有目标传感器的硬件;第一电子设备将配置后的第一传感器列表中的传感器注册到框架层的第二传感器列表中,然后第一电子设备即可根据第二传感器列表,从内核层读取
该第二电子设备发送的目标传感器采集的数据。
9.进一步的,用户还可以通过第二电子设备针对预设应用触发退出操作,第二电子设备基于该退出操作向第一电子设备发送针对预设应用的退出请求,第一电子设备接收到该退出请求后,基于该退出请求,退出预设应用;然后,第一电子设备可以将该第一传感器列表置空,第一电子设备将置空后的第一传感器列表中的传感器注册到第二传感器列表。进而第一电子设备的操作系统不会查询到上述目标传感器的存在,即不会感知到上述目标传感器,进而不会调用上述目标传感器,减少操作系统报错。
10.在一些可能的实现方式中,第一电子设备的操作系统还包括应用层;第一电子设备和第二电子设备均部署有分布式移动感知平台dmsdp模块,第二电子设备的目标传感器采集数据后,可以通过第二电子设备的dmsdp模块将目标传感器采集的数据发送给第一电子设备的dmsdp模块,第一电子设备可以将dmsdp模块接收的数据写入到内核层的传感器节点中;然后第一电子设备根据第二传感器列表从内核层的传感器节点读取目标传感器采集的数据,并透传给应用层中的所述预设应用。从而保证第一电子设备的操作系统减少报错,使得预设应用能够正常运行。
11.在一些可能的实现方式中,第一电子设备根据与所述预设应用对应的目标传感器的配置信息,配置所述硬件抽象层的第一传感器列表,可以是第一电子设备在所述硬件抽象层的第一传感器列表中写入与所述预设应用对应的目标传感器的代码。
12.在一些可能的实现方式中,第一电子设备将配置后的第一传感器列表中的传感器注册到所述框架层的第二传感器列表,可以是第一电子设备通过重新初始化传感器服务的方式,将配置后的第一传感器列表中的传感器注册到所述框架层的第二传感器列表。
13.在一些可能的实现方式中,目标传感器包括以下至少一个:陀螺仪、加速度传感器、方向传感器和重力传感器。
14.第二方面,本技术实施例还提供了一种控制系统,该控制系统包括第一电子设备和第二电子设备;所述第一电子设备运行有操作系统,所述操作系统包括框架层、硬件抽象层和内核层;所述第一电子设备未配备目标传感器的硬件,所述第二电子设备配备有所述目标传感器的硬件;
15.所述第二电子设备,用于向所述第一电子设备发送的连接请求;
16.所述第一电子设备,用于根据所述连接请求,将所述第一电子设备的界面投屏到所述第二电子设备;
17.所述第二电子设备,还用于根据用户在所述第二电子设备的界面针对预设应用触发的启动操作,向所述第一电子设备发送启动请求;
18.所述第一电子设备,还用于根据所述启动请求,启动所述预设应用,根据与所述预设应用对应的目标传感器的配置信息,配置所述硬件抽象层的第一传感器列表,将配置后的第一传感器列表中的传感器注册到所述框架层的第二传感器列表,根据所述第二传感器列表,从所述内核层读取所述第二电子设备发送的所述目标传感器采集的数据。
19.在一些可能的实现方式中,所述第二电子设备,还用于根据用户在所述第二电子设备的界面针对所述预设应用触发的退出操作,向所述第一电子设备发送退出请求;
20.所述第一电子设备,还用于根据所述退出请求,退出所述预设应用,并将所述第一传感器列表置空,将置空后的第一传感器列表中的传感器注册到所述第二传感器列表。
21.在一些可能的实现方式中,所述操作系统还包括应用层;
22.所述第二电子设备,具体用于通过dmsdp模块向所述第一电子设备的dmsdp模块发送目标传感器采集的数据;
23.所述第一电子设备,具体用于将所述第一电子设备的dmsdp模块接收的目标传感器采集的数据写入到所述内核层的传感器节点中,根据所述第二传感器列表,从所述传感器节点中读取目标传感器采集的数据,并透传给所述应用层中的所述预设应用。
24.第三方面,本技术提供了一种电子设备,该电子设备可以是第一电子设备,包括:存储器和处理器;在所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令;当所述指令被所述处理器执行时,使得所述电子设备执第一方面中任一项所述的方法。
25.第四方面,本技术提供了一种计算机存储介质,包括计算机指令,当所述计算机指令在电子设备运行时,所述电子设备执行第一方面任一项所述的方法。
26.第五方面,本技术提供了一种计算机程序产品,包括指令;当所述指令被电子设备运行时,使得所述电子设备执行第一方面中任一项所述的方法。
27.应当理解的是,本技术中对技术特征、技术方案、有益效果或类似语言的描述并不是暗示在任意的单个实施例中可以实现所有的特点和优点。相反,可以理解的是对于特征或有益效果的描述意味着在至少一个实施例中包括特定的技术特征、技术方案或有益效果。因此,本说明书中对于技术特征、技术方案或有益效果的描述并不一定是指相同的实施例。进而,还可以任何适当的方式组合本实施例中所描述的技术特征、技术方案和有益效果。本领域技术人员将会理解,无需特定实施例的一个或多个特定的技术特征、技术方案或有益效果即可实现实施例。在其他实施例中,还可在没有体现所有实施例的特定实施例中识别出额外的技术特征和有益效果。
附图说明
28.图1为本技术实施例提供的一种大屏终端的软件结构示意图;
29.图2为本技术实施例提供的一种传感器注册流程的示意图;
30.图3为本技术实施例提供的一种应用场景的示意图;
31.图4a为本技术实施例提供的一种传感器注册方法的流程图;
32.图4b为本技术实施例提供的又一种传感器注册方法的流程图;
33.图5a为本技术实施例提供的一种手机桌面的示意图;
34.图5b为本技术实施例提供的一种用于建立连接的应用的用户界面的示意图;
35.图5c为本技术实施例提供的一种大屏终端设备的用户界面的示意图;
36.图5d为本技术实施例提供的一种手机端显示大屏终端的显示界面的示意图;
37.图5e为本技术实施例提供的一种游戏模式的界面示意图;
38.图6为本技术实施例提供的一种手机与大屏终端建立连接的示意图;
39.图7为本技术实施例提供的一种大屏终端重新注册传感器的示意图;
40.图8为本技术实施例提供的又一种大屏终端重新注册传感器的示意图;
41.图9为本技术实施例提供的一种第一电子设备的结构示意图;
42.图10为本技术实施例提供的又一种第一电子设备的结构示意图。
具体实施方式
43.本技术说明书和权利要求书及附图说明中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于限定特定顺序。
44.在本技术实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本技术实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
45.为了下述各实施例的描述清楚简洁,首先给出相关技术的简要介绍:
46.传感器(transducer/sensor)是指能感受被测量并按照一定的规律转换成可用输出信号的器件或装置,通常由敏感元件(sensing element)和转换元件(transducing element)组成。其中,敏感元件是指传感器中能直接感受或响应被测量的部位,转换元件是指传感器中能将敏感元件感受或响应的被测量转换成适于传输或测量的电信号部分。
47.在手机等电子设备中,通常会配置一些传感器,例如重力传感器、加速度传感器、陀螺仪、方向传感器等。其中,基于重力传感器,手机能够在横屏和竖屏之间的智能切换、控制拍照照片朝向、进行重力感应类游戏的控制等;基于加速度传感器,手机能够实现计步功能(例如,用户行走的步数);基于陀螺仪,手机能够实现“摇一摇”(例如晃动手机)功能、在游戏类应用中控制视角、在gps无信号时(例如在隧道中)实现惯性导航;基于方向传感器,手机能够确定自身所处的物理位置(例如手机处于正竖、倒竖、左横、右横、仰、俯等物理位置)。
48.需要说明的是,以上仅仅是对手机上的一些传感器的介绍,在另一些示例中,手机也可以包括更多的传感器,例如光线传感器、距离传感器、指纹传感器等,手机也可以包括更少的传感器。
49.随着计算机技术的发展,电子设备的屏幕越来越大,大屏终端应运而生。相对于手机而言,大屏终端的屏幕尺寸可以达到55寸,甚至更大。大屏终端可以是智慧屏、会议终端等,大屏终端的屏幕尺寸较大,在设计和生产过程中,不会为大屏终端配置陀螺仪、重力传感器、加速度传感器、方向传感器等传感器。
50.在一些场景中,大屏终端需要使用上述传感器所采集的数据。例如在游戏场景中,手机可以作为大屏终端的游戏手柄,即分布式游戏场景。因此,大屏终端在启动(如开机)后,大屏终端的操作系统(例如安卓操作系统)会将上述传感器注册到传感器设备(sensordevice)类中,从而便于后续基于sensordevice提供的接口,调用传感器所采集的数据。为了便于理解,后续以大屏终端以及大屏终端的操作系统为安卓操作系统为例进行介绍。
51.然而,由于大屏终端上并没有配备上述传感器的硬件,在游戏场景下,大屏终端运行重力感应类应用过程中,无法获取到相关传感器(例如重力传感器)所采集的数据,安卓操作系统会报错,进而导致重力感应类应用无法正常运行,甚至出现闪退的情况。
52.参见图1,该图为本技术实施例提供的一种大屏终端的软件结构示意图。该大屏终端的软件结构可以分为若干个层,每一层都有清晰的角色和分工,层与层之间通过软件接口通信。在一些示例中,大屏终端的操作系统可以是安卓(android)系统,安卓操作系统分为四层,从上至下分别为应用层(applications)、框架层(framework)、硬件抽象层
(hardware abstraction layer,hal)和内核层(kernel)。
53.其中,应用层可以包括一系列应用程序,例如、日历、通话、地图、音乐、游戏(例如重力感应类应用)等。框架层为应用层的应用程序提供应用编程接口(application programming interface,api)和编程框架,在该框架层可以包括一些预先定义的函数。硬件抽象层定义硬件“驱动”的接口,降低安卓操作系统与硬件的耦合度。内核层负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
54.需要说明的是,本技术实施例仅仅是以大屏终端的操作系统为安卓操作系统为例进行介绍,在另一些实施例中,大屏终端的操作系统也可以是其他操作系统。
55.为了便于理解,下面一并结合图2所示的传感器注册的流程图进行介绍。如图2所示,大屏终端启动后,大屏终端的安卓操作系统启动,在框架层(framework)中创建系统进程服务(systemserver),系统中的服务会驻留在systemserver进程中。例如,窗口管理器(window manager server,wms)、活动管理器系统服务(activity manager system service,ams)、包管理服务器(package manager server,pms)等系统服务都是以线程的方式存在于systemserver进程中。
56.在systemserver创建后,systemserver会初始化传感器服务(sensorservice),以完成传感器设备(sensordevice)和sensorhal的初始化,以及将支持的传感器(如图1所示的sensorlist_1)注册到sensordevice里,得到sensorlist_2。其中,sensorlist_1也可以称为第一传感器列表,sensorlist_2也可以称为第二传感器列表。
57.具体地,sensorservice调用onfirstref函数初始化sensordevice和sensorhal。其中,sensordevice类负责管理和维护系统中的传感器(如图1中所示的sensorlist_1中的传感器),封装了传感器的使能、配置、数据读取等功能。sensordevice和sensorhal初始化后,sensordevice通过sensorhal获取到第一传感器列表(sensorlist_1),并调用registersensor函数把支持的传感器(如图1所示的sensorlist_1)注册到sensordevice里,得到第二传感器列表(sensorlist_2),以便后续sensorservice通过sensordevice提供的接口,查询大屏终端支持哪些传感器,并调用相关传感器的功能。在一些示例中,sensorservice通过调用get_sensors_list函数,从sensordevice获取第二传感器列表(sensorlist_2),以得知大屏终端所支持的传感器。
58.可见,sensordevice在自身的进程内维护第二传感器列表(sensorlist_2),即使后续sensorhal中的第一传感器列表(sensorlist_1)发生变化,大屏终端的安卓操作系统也无法感知,即没有做到动态注册传感器。而为了使得大屏终端支持较多的应用场景,例如游戏场景(保证用户能够体验大屏终端的重力感应类应用),会预先将陀螺仪、重力传感器、加速度传感器、方向传感器等传感器的相关代码写入到sensorhal的第一传感器列表(sensorlist_1)中,以便通过上述图2所示的初始化流程后,大屏终端的安卓操作系统能够感知到sensordevice中所维护的第二传感器列表(sensorlist_2)存在上述传感器。但是,当大屏终端运行上述重力感应类应用时,由于大屏终端上并没有配备上述传感器的相关硬件,这将会导致大屏终端的安卓操作系统在调用上述传感器时,无法获取到传感器的数据,进而安卓操作系统会出现报错的情况,如此,大屏终端将无法正常运行相关应用(如重力感应类应用),甚至出现闪退的情况。
59.有鉴于此,本技术实施例提供了一种传感器注册方法,在该方法中,第一电子设备
(例如大屏终端)可以先将安卓操作系统的硬件抽象层中的第一传感器列表(sensorlist_1)置空,即不预先将上述陀螺仪、重力传感器、加速度传感器、方向传感器等传感器的相关代码写入到sensorhal的第一传感器列表(sensorlist_1)中。在大屏终端检测到与第二电子设备(例如手机)连接后,手机可以将大屏终端的界面投屏到手机上,基于此,用户可以通过手机控制大屏终端启动预设应用(例如可以是游戏应用,其中游戏应用可以包括重力感应类应用)。大屏终端感知到游戏应用运行后,大屏终端根据目标传感器(例如重力传感器)的配置信息(例如相关代码),配置第一传感器列表(sensorlist_1),然后再基于该配置后的第一传感器列表(sensorlist_1),将目标传感器注册到框架层的第二传感器列表(sensorlist_2)中,以实现目标传感器的初始化。接着,手机可以将目标传感器采集的数据发送到大屏终端在内核层创建的传感器节点(/dev/dmsdpsensorhub)中,大屏终端基于第二传感器列表(sensorlist_2)从该传感器节点中读取目标传感器所采集的数据,并提供给游戏应用。如此,大屏终端能够基于该第二传感器列表(sensorlist_2),获取目标传感器所采集的数据,从而避免了安卓操作系统的报错,进而保证大屏终端在相关场景(例如游戏场景)能够正常运行重力感应类应用,减少闪退的情况。
60.接着,在大屏终端感知到退出游戏模式(例如退出游戏应用)时,大屏终端将硬件抽象层的第一传感器列表(sensorlist_1)重新置空,并基于置空后的第一传感器列表(sensorlist_1),重新注册框架层中的第二传感器列表(sensorlist_2)。此时大屏终端退出了游戏场景,无需获取目标传感器所采集的数据,安卓操作系统不会报错,进而能够保证大屏终端能够正常运行。
61.为了便于理解,本技术实施例以第一电子设备为大屏终端、第二电子设备为手机为例,进行介绍。
62.图3为本技术实施例提供的一种应用场景的示意图。在该应用场景中,大屏终端301上可以安装有重力感应类应用(例如重力感应类游戏),在大屏终端301未运行上述重力感应类游戏时,由于大屏终端未配置重力传感器,可以在硬件抽象层的第一传感器列表中不预先写入重力传感器的相关代码。大屏终端301与手机302建立连接后,即,大屏终端301投屏到手机302上,用户可以基于手机302启动大屏终端301上的重力感应类游戏,大屏终端301进入游戏模式,大屏终端301可以将该重力传感器的相关代码重新写入到硬件抽象层的第一传感器列表(sensorlist_1)中,然后基于重新配置后的第一传感器列表,将重力传感器注册到框架层的第二传感器列表(sensorlist_2)中。接着,在手机302发生晃动后,手机302上的重力传感器会采集到数据,手机302可以将该重力传感器采集的数据发送到大屏终端301在内核层创建的传感器节点。然后大屏终端301可以基于上述第二传感器列表(sensorlist_2),从该传感器节点中读取重力传感器采集的数据。如此大屏终端301能够正常运行重力感应类应用,减少闪退的情况,提高用户体验。
63.为了使得本技术的技术方案更加清楚、易于理解,下面结合上述应用场景,对本技术实施例提供的传感器注册方法进行介绍。如图4a所示,本技术实施例提供的传感器注册方法包括:
64.s1、大屏终端的硬件抽象层将第一传感器列表(sensorlist_1)默认置空。
65.大屏终端启动后,大屏终端的安卓操作系统启动,在框架层中创建systemserver。在systemserver创建后,systemserver会初始化传感器服务(sensorservice),以完成传感
器设备(sensordevice)和sensorhal的初始化。在本技术实施例中,在大屏终端启动后,硬件抽象层中的sensorhal将第一传感器列表(sensorlist_1)默认置空。
66.s2、大屏终端的硬件抽象层通知框架层注册传感器。
67.例如,硬件抽象层的sensorhal通知框架层的sensordevice进行初始化。
68.s3、大屏终端的框架层将第一传感器列表(sensorlist_1)中的传感器注册到第二传感器列表(sensorlist_2)。
69.在初始化传感器服务过程中,由于第一传感器列表(sensorlist_1)已被置空,sensordevice将sensorhal的第一传感器列表(sensorlist_1)中的传感器注册到sensordevice后,sensordevice中的第二传感器列表(sensorlist_2)也不会包括上述重力传感器、陀螺仪等传感器的类或对象。进而大屏终端的安卓操作系统通过sensordevice提供的接口不会查询到上述传感器,即,不会感知到上述传感器,进而不会调用上述传感器,减少安卓操作系统报错。为了便于理解,后续以目标传感器为重力传感器为例,进行介绍。
70.s4、大屏终端的内核层创建传感器节点(/dev/dmsdpsensorhub)。
71.大屏终端启动后,安卓操作系统会自动在内核层创建该传感器节点(/dev/dmsdpsensorhub)。
72.需要说明的是,本技术实施例不具体限定上述s1-s3可以与s4执行先后顺序,在一些示例中,上述s1-s3可以与s4并行。
73.s5、手机的大屏客户端接收用户触发的连接操作。
74.其中,大屏客户端可以是用于与大屏终端建立连接的应用,例如智慧连接app。在一些场景中,例如游戏场景,手机可以大屏终端显示的界面投屏到手机上。在一些示例中,手机上可以部署有分布式移动感知平台(distributed mobile sensing development platform,dmsdp)模块,大屏终端上也可以部署有dmsdp模块。其中,dmsdp模块用于将设备虚拟化,把手机的传感器虚拟成大屏终端的传感器。而手机作为便携性较好的电子设备,手机在生产后,通常会配备上述陀螺仪、重力传感器、加速度传感器等传感器。
75.下面结合图5a-图5e,对手机与大屏终端建立连接的方式进行介绍。
76.如图5a所示,该图为本技术实施例提供的一种手机桌面的示意图,该手机桌面包括智慧连接app的图标501以及其他app的图标。用户可以点击该智慧连接app的图标501,手机基于用户对该智慧连接app的图标501的点击操作,可以向用户呈现该智慧连接app的用户界面。
77.如图5b所示,该图为本技术实施例提供的一种用于与大屏终端建立连接的应用的用户界面的示意图,该智慧连接app的用户界面包括大屏终端设备502,还包括其他设备,如摄像监控设备、手表设备、耳机设备、电视设备等。用户可以点击该大屏终端设备502,手机基于用户对该大屏终端设备502的点击操作呈现该与该大屏终端相关的用户界面。
78.如图5c所示,该图为本技术实施例提供的一种大屏终端设备的用户界面的示意图,该大屏终端设备的用户界面包括镜像操控控件503以及遥控器控件、搜索控件等。不同的控件提供了不同的功能,其中,镜像操控控件503用于将大屏终端所显示的界面投屏到手机端,遥控器控件可以用于控制大屏终端,搜索控件可以用于搜索影片等。用户可以通过点击该镜像操控控件503触发连接操作。
79.s6、手机根据连接操作,向大屏终端的大屏服务端发送连接请求。
80.其中,大屏服务端可以是大屏终端启动后的一个常驻服务,用户在通过手机的智慧连接app触发连接操作后,大屏服务端可以接收手机基于该连接操作向大屏终端发送的连接请求。
81.s7、大屏客户端绑定手机侧的dmsdp模块。
82.手机上的大屏客户端与dmsdp模块建立联系,从而手机的安卓操作系统会运行该dmsdp模块的服务,进而手机能够利用该dmsdp模块的功能。在一些示例中,手机的大屏客户端可以是在向大屏终端的大屏服务端发送连接请求的同时,绑定手机侧的dmsdp模块。
83.s8、大屏服务端绑定大屏终端侧的dmsdp模块。
84.大屏终端上的大屏服务端与dmsdp模块建立联系,从而大屏终端的安卓操作系统会运行该dmsdp模块的服务,进而大屏终端能够利用该dmsdp模块的功能。在一些示例中,大屏终端可以是在大屏服务端接收连接请求后,绑定手机侧的dmsdp模块。
85.s9、大屏终端的大屏服务端根据连接请求,向手机发起回连。
86.大屏终端在接收到该连接请求后,可以向手机发起回连,从而建立手机与大屏终端的连接,然后大屏终端的显示界面会被投屏到手机端。此时,手机与大屏终端建立dmsdp数据通道。如图5d所示,该图为本技术实施例提供的一种手机端显示大屏终端的显示界面的示意图。大屏终端的显示界面包括重力感应类应用(例如游戏应用)的图标504以及其他应用,如日历、时间、天气、图库等,在该大屏终端的显示界面还呈现有提示语,如“您可以通过手持设备操控大屏终端”。
87.s10、手机的大屏客户端接收用户触发的启动游戏操作。
88.s11、手机的大屏客户端根据该启动游戏操作,向大屏终端的大屏服务端发送启动游戏请求。
89.s12、大屏终端的大屏服务端根据该启动游戏请求,通知游戏应用启动。
90.在一些示例中,大屏终端投屏到手机后,用户可以通过点击手机界面上的重力感应类应用的图标504,触发启动游戏操作。接着,手机的大屏客户端根据该启动游戏操作,向大屏终端的大屏服务端发送启动游戏请求。大屏终端的大屏服务端根据该启动游戏请求,通知游戏应用启动。
91.s13、大屏终端的大屏服务端通知dmsdp模块,大屏终端进入游戏模式。
92.在大屏终端感知到该该重力感应类应用启动后,即进入游戏模式。如图5e所示,该图为本技术实施例提供的一种游戏模式的界面的示意图。在该游戏模式的界面呈现有提示信息505,该提示信息505用于向用户提示大屏终端已进入游戏模式。
93.s14、大屏终端的dmsdp模块将重新配置第一传感器列(sensorlist_1)的消息1写入/dev/dmsdpsensorhub节点。
94.s15、大屏终端的内核层上报该消息1。
95.在一些示例中,大屏终端的硬件抽象层中的sensorhal可以从内核层读取上述/dev/dmsdpsensorhub节点中的消息1。
96.s16、大屏终端的内核层根据该消息1,在该第一传感器列表(sensorlist_1)写入重力传感器的代码。
97.在手机与大屏终端建立连接后,大屏终端可以重新配置第一传感器列表,然后再重新初始化传感器服务。
98.在一些示例中,大屏终端可以获取目标传感器的配置信息,该目标传感器为上述重力感应类应用对应的传感器,例如重力传感器,然后大屏终端基于该目标传感器的配置信息重新配置该第一传感器列表。一并参见图6和图7,大屏终端在确定与手机建立连接(例如建立dmsdp数据通道),且大屏终端进入到游戏模式后,大屏终端的dmsdp模块会向内核层的/dev/dmsdpsensorhub节点中写入重新配置第一传感器列(sensorlist_1)的消息1,硬件抽象层的sensorhal读取该消息1后,在第一传感器列表(sensorlist_1)中添加上述目标传感器的相关代码。
99.需要说明的是,目标传感器还可以是其他传感器,如加速度传感器、陀螺仪、方向传感器等。上述示例仅仅是以目标传感器为重力传感器为例,进行介绍。
100.在一些示例中,大屏终端的dmsdp模块通过向内核层的/dev/dmsdpsensorhub节点中写入重新配置第一传感器列(sensorlist_1)的消息1,sensorhal读取该消息1后,可以通过sensors.dmsdp.so函数重新配置sensorhal中的第一传感器列表(sensorlist_1)。例如在第一传感器列表(sensorlist_1)写入如下代码:
[0101][0102]
s17、大屏终端的硬件抽象层通知框架层重新注册传感器。
[0103]
s18、大屏终端的框架层将第一传感器列表(sensorlist_1)中的传感器注册到第二传感器列表(sensorlist_2)。
[0104]
在一些示例中,在完成对第一传感器列表(sensorlist_1)的重新配置后,sensorhal通知sensorservice重新加载,进行重新初始化。如此,在sensordevice初始化过程中,sensordevice通过sensorhal获取到重新配置后的第一传感器列表(sensorlist_1),此时第一传感器列表(sensorlist_1)不为空,sensordevice调用registersensor函数将第一传感器列表(sensorlist_1)中的传感器注册到第二传感器列表(sensorlist_2),以便后续sensorservice通过sensordevice提供的接口,调用第二传感器列表(sensorlist_2)中
注册的传感器。
[0105]
s19、手机的框架层向dmsdp模块上报重力传感器所采集的数据。
[0106]
手机控制大屏终端进入游戏模式后,手机在晃动后,重力传感器可以采集到数据,dmsdp模块可以读取该重力传感器采集的数据。
[0107]
s20、手机的dmsdp模块向大屏终端的dmsdp模块发送重力传感器采集的数据。
[0108]
在一些示例中,手机与大屏终端之间建立的连接可以是物理链路,通过该物理链路手机的dmsdp模块向大屏终端的dmsdp模块发送重力传感器采集的数据。
[0109]
s21、大屏终端的dmsdp模块在接收到手机的dmsdp模块传输的重力传感器采集的数据后,将该重力传感器采集的数据写入到/dev/dmsdpsensorhub节点。
[0110]
s22、大屏终端的内核层向硬件抽象层上报该重力传感器采集的数据。
[0111]
s23、大屏终端的硬件抽象层向框架层上报该重力传感器采集的数据。
[0112]
s24、大屏终端的框架层向应用层的游戏应用上报该重力传感器采集的数据。
[0113]
s25、大屏终端的应用层的游戏应用根据上报重力传感器的数据,对游戏进行控制。
[0114]
由于手机与大屏终端已经建立dmsdp数据通道,大屏终端的dmsdp模块会将手机发送的重力传感器所采集的数据写入到该传感器节点(/dev/dmsdpsensorhub)中,然后内核层将目标传感器所采集的数据回传给硬件抽象层的sensorhal,硬件抽象层的sensorhal再将目标传感器所采集的数据回传给框架层的sensorservice,最后由框架层的sensorservice将目标传感器所采集的数据回传给应用层的重力感应类应用(例如重力感应类游戏)。
[0115]
如此,即使大屏终端上没有配备重力传感器的硬件,通过将手机与大屏终端建立连接并在大屏终端进入游戏模式后,大屏终端重新配置第一传感器列表(sensorlist_1)以及重新初始化传感器服务,调用registersensor函数将第一传感器列表(sensorlist_1)中的传感器注册到第二传感器列表(sensorlist_2)。接着手机可以将该重力传感器采集的数据发送给大屏终端的dmsdp模块,该大屏终端的dmsdp模块将重力传感器采集的数据写入到内核层的传感器节点(/dev/dmsdpsensorhub)中,如此,大屏终端能够通过第二传感器列表(sensorlist_2)读取传感器节点(/dev/dmsdpsensorhub)中的重力传感器采集的数据,相当于从手机获取目标传感器所采集的数据,使得大屏终端能够正常运行相关应用(如重力感应类游戏),减少闪退的情况,满足用户的需求,提高用户的体验。
[0116]
进一步,在大屏终端退出游戏模式后,大屏终端可以再次将第一传感器列表(sensorlist_1)置空,下面结合图4b进行介绍,如图4b所示,本技术实施例提供的传感器注册方法包括:
[0117]
s26、手机的大屏客户端接收用户触发的退出游戏操作。
[0118]
s27、手机的大屏客户端根据退出游戏操作,向大屏终端的大屏服务端发送游戏退出请求。
[0119]
在一些示例中,用户可以在完成一次游戏后,通过游戏界面的返回键或退出键触发退出游戏操作。手机的大屏客户端可以基于该退出游戏操作,向大屏终端的大屏服务端发送游戏退出请求。
[0120]
s28、大屏终端的大屏服务端根据该游戏退出请求,通知应用层关闭游戏应用。
[0121]
s29、大屏终端的大屏服务端通知dmsdp模块退出游戏模式。
[0122]
在一些实施例中,用户通过手机控制大屏终端退出上述游戏模式。在另一些实施例中,用户也可以通过大屏终端直接退出游戏模式,例如通过直接控制大屏终端(例如用户对大屏终端操作),退出游戏模式。
[0123]
s30、大屏终端的dmsdp模块将重新配置sensorlist_1的消息2写入/dev/dmsdpsensorhub节点。
[0124]
大屏终端感知到退出游戏模式时,可以重新配置该第一传感器列表(sensorlist_1),例如再次将该第一传感器列表(sensorlist_1)置空,并初始化。
[0125]
s31、大屏终端的内核层向硬件抽象层上报消息2。
[0126]
s32、大屏终端的硬件抽象层根据该消息2置空第一传感器列表(sensorlist_1)。
[0127]
一并参见图6和图8,在大屏终端退出游戏模式后,大屏终端的dmsdp模块会向内核层的/dev/dmsdpsensorhub节点中写入重新配置sensorlist_1的消息2,硬件抽象层的sensorhal读取该消息2后,sensorhal将第一传感器列表(sensorlist_1)重新置空。
[0128]
s33、大屏终端的硬件抽象层通知框架层重新注册传感器。
[0129]
在一些示例中,sensorhal可以通知框架层的sensorservice重新加载,进行重新初始化。
[0130]
s34、大屏终端的框架层将第一传感器列表(sensorlist_1)中的传感器注册到第二传感器列表(sensorlist_2)。
[0131]
在将sensorhal中的第一传感器列表(sensorlist_1)置空后,在sensordevice初始化过程中,sensordevice通过sensorhal获取到重新置空后的第一传感器列表(sensorlist_1),此时第一传感器列表(sensorlist_1)为空,sensordevice调用registersensor函数将第一传感器列表(sensorlist_1)中的传感器注册到sensordevice的第二传感器列表(sensorlist_2)。由于sensordevice中的第二传感器列表(sensorlist_2)不存在上述重力传感器的类或对象。进而大屏终端的安卓操作系统通过sensordevice提供的接口不会查询到上述重力传感器,不会感知到上述重力传感器,进而不会调用上述重力传感器,减少大屏终端的安卓操作系统报错。
[0132]
基于上述内容描述,本技术实施例提供了一种传感器注册方法,大屏终端根据对目标传感器的需求,对目标传感器进行重新注册,减少安卓操作系统报错,保证大屏终端能够正常运行,减少闪退的情况。进一步的,在游戏场景中,大屏终端进入游戏模式后,大屏终端的安卓操作系统会将目标传感器的代码重新写入到硬件抽象层的sensorhal的第一传感器列表(sensorlist_1)中,使第一传感器列表(sensorlist_1)由原来的置空变为包括目标传感器的相关代码,以便后续框架层中的sensordevice重新调用registersensor函数将第一传感器列表(sensorlist_1)中的传感器注册到sensordevice的第二传感器列表(sensorlist_2)中。接着,游戏过程中,手机上的目标传感器会采集到数据,手机可以将该目标传感器采集的数据发送到大屏终端在内核层创建的传感器节点。然后大屏终端可以基于上述第二传感器列表(sensorlist_2),从该传感器节点中读取目标传感器采集的数据。如此大屏终端能够正常运行相关应用,减少闪退的情况,提高用户体验。进一步的,在游戏场景中,大屏终端退出游戏模式后,大屏终端的安卓操作系统会将第一传感器列表(sensorlist_1)重新置空,并再次重新注册。如此,大屏终端的安卓操作系统通过
sensordevice提供的接口不会查询到上述目标传感器,不会感知到上述目标传感器,进而不会调用上述目标传感器,减少大屏终端的安卓操作系统报错。
[0133]
在一些实施例中,第一电子设备的结构可以如图9所示,第一电子设备可以包括处理器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,气压传感器180c,接近光传感器180g,指纹传感器180h,温度传感器180j,触摸传感器180k,环境光传感器180l,骨传导传感器180m等,传感器模块180不包括陀螺仪传感器、加速度传感器、重力传感器等。
[0134]
可以理解的是,本实施例示意的结构并不构成对第一电子设备的具体限定。在另一些实施例中,第一电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
[0135]
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,ap),调制解调处理器,图形处理器(graphics processing unit,gpu),图像信号处理器(image signal processor,isp),控制器,视频编解码器,数字信号处理器(digital signal processor,dsp),基带处理器,和/或神经网络处理器(neural-network processing unit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。例如,在本技术中,处理器根据第二电子设备发送的连接请求,将所述第一电子设备的界面投屏到所述第二电子设备;根据所述第二电子设备发送针对预设应用的启动请求,启动所述预设应用,所述启动请求通过用户在所述第二电子设备的界面针对所述预设应用触发的启动操作得到;根据与所述预设应用对应的目标传感器的配置信息,配置所述硬件抽象层的第一传感器列表;所述第一电子设备未配备所述目标传感器的硬件,所述第二传感器配备有所述目标传感器的硬件;将配置后的第一传感器列表中的传感器注册到所述框架层的第二传感器列表;根据所述第二传感器列表,从所述内核层读取所述第二电子设备发送的所述目标传感器采集的数据。
[0136]
其中,控制器可以是第一电子设备的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0137]
在一些实施例中,处理器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)接口等。
[0138]
i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,sda)和一根串行时钟线(derail clock line,scl)。在一些实施例中,处理器110可以包含
多组i2c总线。处理器110可以通过不同的i2c总线接口分别耦合触摸传感器180k,充电器,闪光灯,摄像头193等。例如:处理器110可以通过i2c接口耦合触摸传感器180k,使处理器110与触摸传感器180k通过i2c总线接口通信,实现电子设备的触摸功能。
[0139]
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对第一电子设备的结构限定。在本技术另一些实施例中,电子设备也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
[0140]
第一电子设备的显示屏194上可以显示一系列图形用户界面(graphical user interface,gui),这些gui都是该第一电子设备的主屏幕。一般来说,第一电子设备的显示屏194的尺寸是固定的,只能在该电子设备的显示屏194中显示有限的控件。控件是一种gui元素,它是一种软件组件,包含在应用程序中,控制着该应用程序处理的所有数据以及关于这些数据的交互操作,用户可以通过直接操作(direct manipulation)来与控件交互,从而对应用程序的有关信息进行读取或者编辑。一般而言,控件可以包括图标、按钮、菜单、选项卡、文本框、对话框、状态栏、导航栏、widget等可视的界面元素。
[0141]
另外,在上述部件之上,运行有操作系统。例如android开源操作系统、windows操作系统等,在该操作系统上可以安装运行应用程序。
[0142]
本技术的一些实施例还提供了一种第一电子设备,如图10所示,该电子设备可以包括:一个或多个处理器1002;存储器1003;以及一个或多个计算机程序1004,上述各器件可以通过一个或多个通信总线1005连接。其中该一个或多个计算机程序1004被存储在上述存储器1003中,并被配置为被该一个或多个处理器1002执行,该一个或多个计算机程序1004包括指令,上述指令可以用于执行如图4a、图4b中的相应实施例中大屏终端执行的各个步骤。当然,图10所示的电子设备还可以包括通信接口1003,该通信接口1003用于与第二电子设备进行通信,例如接收第二电子设备发送的连接请求等。
[0143]
本实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中包括指令,当上述指令在电子设备上运行时,使得该电子设备执行图4a、图4b中的相关方法步骤,以实现上述实施例中的方法。
[0144]
本实施例还提供了一种包含指令的计算机程序产品,当该计算机程序产品在第一电子设备上运行时,使得该第一电子设备执行如图4a、图4b中的相关方法步骤,以实现上述实施例中的方法。
[0145]
本实施例还提供了一种控制系统,包括:第一电子设备和第二电子设备;所述第一电子设备运行有操作系统,所述操作系统包括框架层、硬件抽象层和内核层;所述第一电子设备未配备目标传感器的硬件,所述第二电子设备配备有所述目标传感器的硬件;
[0146]
所述第二电子设备,用于向所述第一电子设备发送的连接请求;
[0147]
所述第一电子设备,用于根据所述连接请求,将所述第一电子设备的界面投屏到所述第二电子设备;
[0148]
所述第二电子设备,还用于根据用户在所述第二电子设备的界面针对预设应用触发的启动操作,向所述第一电子设备发送启动请求;
[0149]
所述第一电子设备,还用于根据所述启动请求,启动所述预设应用,根据与所述预设应用对应的目标传感器的配置信息,配置所述硬件抽象层的第一传感器列表,将配置后的第一传感器列表中的传感器注册到所述框架层的第二传感器列表,根据所述第二传感器
列表,从所述内核层读取所述第二电子设备发送的所述目标传感器采集的数据。
[0150]
可选的,所述第二电子设备,还用于根据用户在所述第二电子设备的界面针对所述预设应用触发的退出操作,向所述第一电子设备发送退出请求;
[0151]
所述第一电子设备,还用于根据所述退出请求,退出所述预设应用,并将所述第一传感器列表置空,将置空后的第一传感器列表中的传感器注册到所述第二传感器列表。
[0152]
可选的,所述操作系统还包括应用层;
[0153]
所述第二电子设备,具体用于通过dmsdp模块向所述第一电子设备的dmsdp模块发送目标传感器采集的数据;
[0154]
所述第一电子设备,具体用于将所述第一电子设备的dmsdp模块接收的目标传感器采集的数据写入到所述内核层的传感器节点中,根据所述第二传感器列表,从所述传感器节点中读取目标传感器采集的数据,并透传给所述应用层中的所述预设应用。
[0155]
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0156]
在本实施例所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0157]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0158]
另外,在本实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0159]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
[0160]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何在本技术揭露的技术范围内的变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献