CN108363609B - 模拟传感器的方法、装置和存储介质 - Google Patents
模拟传感器的方法、装置和存储介质 Download PDFInfo
- Publication number
- CN108363609B CN108363609B CN201810123379.3A CN201810123379A CN108363609B CN 108363609 B CN108363609 B CN 108363609B CN 201810123379 A CN201810123379 A CN 201810123379A CN 108363609 B CN108363609 B CN 108363609B
- Authority
- CN
- China
- Prior art keywords
- sensor
- interception
- simulation
- event
- application
- 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
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
Abstract
本发明公开了一种模拟传感器的方法、装置和存储介质,用以实现传感器事件的模拟。所述模拟传感器的方法,包括:在启动应用时加载重打包应用,并注册拦截传感器注册接口;提取所述拦截传感器接口请求中注册的传感器事件,监听拦截传感器对象并存储;在接收到传感器模拟请求时,针对所述传感器模拟请求构建传感器对象;将所述传感器对象传递给存储的监听器对象,作为所述监听器对象的回调参数;根据监听结果获得传感器事件模拟结果。
Description
技术领域
本发明涉及传感器模拟技术领域,尤其涉及一种模拟传感器的方法、装置和存储介质。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
质量是软件产品的第一生命要素,互联网软件产品的发布必须确保是在通过线下完全的测试环节,只有测试充分后才能发布上线。
但是,随着智能终端设备内置的传感器越来越多,应用程序基于传感器的相关功能也在逐渐增多,但是这些功能无法进行自动化测试,例如,基于重力加速度传感器实现的“摇一摇”功能,需要人为的晃动智能终端,重力加速度传感器检测智能终端在x轴,y轴和z轴上的位移数据并发送给处理器进行相应处理。
由此可见,现有技术中针对涉及传感器功能的软件产品测试过程中,需要人为操作传感器才能触发相关功能,但是由于智能终端设备中安装的传感器种类繁多,不同的功能需要操作的传感器不尽相同,如果每一涉及传感器的业务功能均需人工干预操作,将降低软件产品测试效率,因此,如何模拟传感器事件成为现有技术中亟待解决的技术问题之一。
发明内容
本发明实施例提供一种模拟传感器的方法、装置和存储介质,用以实现传感器事件的模拟。
第一方面,提供一种模拟传感器的方法,包括:
在启动应用时加载重打包应用,并注册拦截传感器接口;
提取所述拦截传感器接口请求中注册的传感器事件,监听拦截传感器对象并存储;
在接收到传感器模拟请求时,针对所述传感器模拟请求构建传感器对象;
将所述传感器对象传递给存储的监听器对象,作为所述监听器对象的回调参数;
根据监听结果获得传感器事件模拟结果。
上述方法中,通过注册拦截传感器接口并提取拦截传感器接口请求中注册的传感器对象并保存,这样,在接收到传感器模拟请求之后,构建建传感器事件对象,将构建的传感器对象作为参数返回给保存的监听器对象进行回调,由此可以实现传感器事件的模拟。
其中,注册拦截传感器接口,具体包括:
根据预先配置的拦截传感器接口名称注册拦截传感器接口。
可选地,针对所述传感器模拟请求构建传感器对象,具体包括:
根据所述传感器模拟请求中携带的传感器类型信息,构建相应类型的传感器对象。
其中,根据所述传感器模拟请求中携带的传感器类型信息,构建相应类型的传感器对象,具体包括:
根据所述传感器模拟请求中携带的传感器类型信息,从预先定义的传感器类型信息所对应的传感器模拟数据中查找对应的传感器模拟数据;
调用传感器事件构造方法,利用查找到的传感器模拟数据构建传感器对象。
其中,接收传感器模拟请求,具体包括:
接收测试进程通过预先在服务器端创建的套接字socket通信发送的传感器模拟请求,其中,所述传感器模拟请求为所述测试进程运行针对被测应用程序设计的测试脚本后发送的。
第二方面,提供一种模拟传感器的装置,包括:
注册模块,用于启动应用时加载重打包应用,并注册拦截传感器接口;
提取模块,用于提取所述拦截传感器接口请求中注册的传感器事件,监听拦截传感器器对象并存储;
构建模块,用于在接收到传感器模拟请求时,针对所述传感器模拟请求构建传感器对象;
传递模块,用于将所述传感器对象传递给存储的监听器对象,作为所述监听器对象的回调参数。
可选地,所述注册模块,用于根据预先配置的拦截传感器接口名称注册拦截传感器接口。
可选地,所述构建模块,具体用于根据所述传感器模拟请求中携带的传感器类型信息,构建相应类型的传感器对象。
可选地,本发明实施例提供的模拟传感器的装置,还包括查找模块,其中:
所述查找模块,用于根据所述传感器模拟请求中携带的传感器类型信息,从预先定义的传感器类型信息所对应的传感器模拟数据中查找对应的传感器模拟数据;
所述构建模块,具体用于调用传感器事件构造方法,利用查找到的传感器模拟数据构建传感器对象。
可选地,所述接收模块,具体用于接收测试进程通过预先在服务器端创建的套接字socket通信发送的传感器模拟请求,其中,所述传感器模拟请求为所述测试进程运行针对被测应用程序设计的测试脚本后发送的。
可选地,所述传递模块,具体用于调用传感器事件构造方法,将所述传感器模拟数据传递给存储的监听器对象。
第三方面,提供一种计算装置,包括至少一个处理器、以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行上述任一模拟传感器的方法所述的步骤。
第四方面,提供一种计算机可读介质,其存储有可由终端设备执行的计算机程序,当所述程序在终端设备上运行时,使得所述终端设备执行上述任一模拟传感器的方法所述的步骤。
本发明实施例提供的模拟传感器的方法、装置和存储介质,通过注册拦截传感器接口并提取拦截传感器接口请求中注册的传感器对象作为监听对象并保存,在接收到传感器模拟请求之后,构建传感器事件对象,将构建的传感器对象作为参数返回给保存的监听器对象,根据监听结果获得传感器事件模拟结果,由此实现了传感器的模拟。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明提供的一种计算装置的结构示意图;
图2为本发明实施例提供的模拟传感器的方法实施流程图;
图3为本发明实施例中测试进程与被测应用程序进程之间的交互流程示意图;
图4为本发明实施例中模拟传感器的装置结构示意图;
图5为根据本发明实施方式的电子设备的结构示意图。
具体实施方式
为了提高软件产品自动化测试的效率,本发明实施例提供了一种模拟传感器的方法、装置和介质。
首先,对本发明实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
1、终端设备,为可以安装各类应用程序,并且能够将已安装的应用程序中提供的对象进行显示的设备,该电子设备可以是移动的,也可以是固定的,。例如,手机、平板电脑、各类可穿戴设备、车载设备、个人数字助理(personal digital assistant,PDA)或其它能够实现上述功能的电子设备等。
2、应用程序,为可以完成某项或多项特定工作的计算机程序,它具有可视的显示界面,能与用户进行交互,比如电子地图和微信等都可以称为应用程序。
3、传感器事件(SensorEvent)类:Android系统使用该类创建传感器事件对象。该对象可以提供与传感器事件相关的信息。传感器事件对象包括的信息有:原始的传感器回传数据、传感器类型、数据的精度以及触发事件的时间。
4、传感器事件监听(SensorEventListener)接口:该接口包含两个回调方法,当传感器的回传值或精度发生变化时,系统会调用这两个回调方法。
5、dex文件:是Android系统中可执行文件的类型。
以下结合说明书附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明,并且在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
本发明实施例提供的模拟传感器的方法可以应用于计算装置中,该计算装置可以以通用计算设备的形式表现,尤其适用于安装了Android操作系统的所有计算设备。下面参照图1来描述根据本发明的计算装置10。图1显示的计算装置10仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算装置10的组件可以包括但不限于:至少一个处理器11、至少一个存储器12、连接不同系统组件(包括存储器12和处理器11)的总线13。
总线13表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储器12可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)121和/或高速缓存存储器122,还可以进一步包括只读存储器(ROM)123。
存储器12还可以包括具有一组(至少一个)程序模块124的程序/实用工具125,这样的程序模块124包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算装置10也可以与一个或多个外部设备14(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算装置10交互的设备通信,和/或与使得该计算装置10能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口15进行。并且,计算装置10还可以通过网络适配器16与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器16通过总线13与用于计算装置10的其它模块通信。应当理解,尽管图中未示出,可以结合计算装置10使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
基于图1所示的计算装置,参照图2所示,为本发明实施例提供的模拟传感器的方法实施流程图,可以包括以下步骤:
S21、在启动应用时加载重打包应用,并注册拦截传感器注册接口。
针对被测应用程序,根据注册拦截传感器接口的程序代码生成dex文件,并与被测应用程序一起打包,这样,被测应用程序启动后,会将注册拦截传感器接口的程序代码一并加载以对相应的传感器接口进行拦截。加载后,被测应用程序中每一次调用拦截传感器接口时均会被拦截。
同时,被测应用程序进程创建Socketserver(服务器端套接字),用于测试进程和被测试应用程序进程之间的通信。其中,测试进程启动后,加载并运行针对被测应用程序设计的测试脚本(基于lua脚本语言实现)启动测试页面。测试过程中,测试进程利用socket(套接字)通信将测试指令传递给被测应用程序进程中的Socketserver,由Socketserver进入到测试页面对相应测试页面进行测试。这样,当测试包含传感器事件的页面功能时,可以检测到其中的传感器注册接口并进行拦截。
具体实施时,在拦截传感器注册接口的程序代码中预先配置需拦截的传感器注册接口名称,Android系统中注册传感器事件的类接口为android.hardware.SystemSensorManager的registerListenerImpl方法。这样,步骤S21中可以根据预先配置的传感器注册接口名称拦截相应的传感器注册接口。
S22、提取所述拦截传感器接口请求中注册的传感器事件,监听拦截传感器对象并存储。
在拦截传感器接口后,提取请求注册的传感器事件作为监听器对象进行监听并存储。
S23、在接收到传感器模拟请求时,针对所述传感器模拟请求构建传感器对象。
本步骤中,测试进程通过运行测试脚本发送传感器模拟请求,具体地,测试进程可以利用socket通信发送传感器模拟请求,其中携带有传感器类型信息。
具体实施时,针对不同的传感器类型信息,预先定义每一传感器类型信息对应的传感器模拟数据。传感器大致可分为以下三类:动作(Motion)传感器、环境(Environmental)传感器和位置(Position)传感器。其中,动作传感器在三个轴(X、Y、Z)上测量加速度和旋转角度,可以包括如下几个传感器:加速度(accelerometer)传感器、陀螺仪(gyroscope)传感器、重力(gravity)传感器、线性加速(linear acceleration)传感器、旋转向量(rotational vector)传感器;环境传感器可以测量不同环境的参数,例如周围环境的空气温度和压强、光照强度和湿度,包括如下几个传感器:温度(barometer)传感器、光线(photometer)传感器、温度(thermometer)传感器、压力(pressure)传感器;位置传感器可以测量设备的物理位置,包括如下几个传感器:方向(orientation)传感器(数据来自加速传感器和磁场传感器)和磁场(magnetomenter)传感器。
具体实施时,在接收到测试进程发送的传感器模拟请求后,被测应用进程创建一个SensorEvent对象,该对象根据传感器模拟请求中携带的传感器类型信息构建相应的模拟数据。具体地,可以根据传感器模拟请求中携带的传感器类型信息,从预先定义的传感器类型信息所对应的传感器模拟数据中查找相应的传感器模拟数据,并调用传感器事件构造方法,利用查找到的传感器模拟数据构建传感器对象,其中,传感器事件构造方法可以为andriod.hardware.SensorEvent。以测试页面包含的业务功能为“摇一摇”为例,“摇一摇”功能涉及的传感器为加速度传感器,针对加速度传感器,预先定义的模拟数据可以为int[]accdata={0,300,50},即向下300,然后向上50,即可模拟加速度传感器,具体地,利用预先定义的加速度传感器模拟数据,通过调用andriod.hardware.SensorEvent的构造方法即可构建SensorEvent对象。
S24、将构建的传感器对象传递给存储的监听器对象,作为所述监听器对象的回调参数。
构建了SensorEvent对象之后,将其作为参数传递给步骤S22中保存的监听器对象,调用监听器对象的onSensorChanged方法即可作为所述监听器对象的回调参数。
S25、根据监听结果获得传感器事件模拟结果。
本发明实施例提供的模拟传感器的方法可以应用于软件测试过程中,用于在软件测试过程中实现传感器的模拟,提高软件测试效率。
为了更好地理解本发明实施例提供的模拟传感器的方法,以下结合本发明实施例提供的模拟传感器的方法在软件测试过程中测试进程和被测应用程序进程之间的交互流程对本发明实施例的具体实施过程进行说明。如图3所示,可以包括以下步骤:
S31、针对被测应用程序,根据注册拦截传感器接口的程序代码生成dex文件,并与被测应用程序一起重打包。
S32、被测应用程序进程启动。
被测应用程序进程启动后,将一并加载注册拦截传感器接口的程序代码,这样,在测试过程中,一旦被测应用程序调用拦截传感器接口均会被拦截。
S33、被测应用程序进程创建Socketserver。
本步骤中,被测应用程序进程在启动之后,创建Socketserver用于与测试进程之间进行通信。
S34、测试进程启动。
需要说明的是,步骤S34和上述的步骤S32没有一定的先后执行顺序,步骤S34可以与步骤S32同时执行,也可以先于步骤S32执行。
S35、测试进程加载针对被测应用程序设计的测试脚本。
S36、测试进程运行测试脚本启动相应的测试页面。
S37、测试进程向被测应用程序进程发送测试指令。
S38、被测试应用程序进程根据接收到的测试指令进入相应的测试页面。
具体实施时,测试进程利用socket通信将测试指令传递给被测应用程序进程中的Socketserver,由Socketserver进入到相应的测试页面。
S39、被测应用程序进程在进入包含有传感器事件的页面时,注册拦截传感器接口。
本步骤中,在根据测试进程发送的测试指令进入到包含有传感器事件的页面时,被测应用程序进程将根据预先定义的拦截传感器接口名称拦截到相应的拦截传感器接口。
S310、被测应用程序进程提取拦截传感器接口中请求注册的传感器事件,监听拦截传感器对象并存储。
S311、测试进程向被测应用程序进程发送传感器模拟请求。
本步骤中,测试进程根据运行的测试脚本利用socket通信向Socketserver发送传感器模拟请求,其中携带有传感器类型信息。
S312、被测应用程序进程构建传感器对象。
本步骤中,被测应用程序进程在接收到传感器模拟请求之后,根据其中携带的传感器类型信息,从预先定义的传感器类型信息与传感器模拟数据之间的对应关系中查找相应的传感器模拟数据,并调用andriod.hardware.SensorEvent构造方法构建传感器对象。
S313、被测应用程序进程将构建的传感器对象传递给保存的监听器对象,并调用onSensorChanged方法将其作为监听器对象的回调参数。
S314、被测应用程序进程根据监听结果获得传感器事件模拟结果。
本发明实施例提供的模拟传感器的方法,在提取了拦截传感器接口注册的传感器事件后,根据具体的传感器类型信息构建相应类型的传感器对象,然后将其作为参数返回给被测应用程序的监听回调,从而实现了传感器模拟功能,上述方法不仅能够模拟加速度传感器,还可以根据传感器类型信息构建不同的传感器对象模拟不同类型的传感器,整个过程无需人工干预,大大提高了自动化测试的测试效率。
本发明实施提供一种通用的模拟传感器事件的实现方法,从而在自动化测试中依赖传感器事件的功能可以有效覆盖,大大减轻测试人员的工作量,提高工作效率。同时,该方案是基于hook的拦截实现,将原有几口拦截,而不是主动调用,与通过反射直接调用的方案相比,具有高适配性,不会因API版本不同导致方案失效。
本发明实施例提供的模拟传感器的方法可以应用于Xtest测试工具中,通过脚本即可触发传感器事件的模拟功能,同时该方案可以移植到其它测试框架中。
基于同一发明构思,本发明实施例中还提供了一种模拟传感器的装置,由于上述装置解决问题的原理与模拟传感器的方法相似,因此上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图4所示,其为本发明实施例提供的模拟传感器的装置结构示意图,包括:
注册模块41,用于在启动应用时加载重打包应用,并注册拦截传感器接口;
提取模块42,用于提取所述拦截传感器接口请求中注册的传感器事件,监听拦截传感器对象并存储;
构建模块43,用于在接收到传感器模拟请求时,针对所述传感器模拟请求构建传感器对象;
传递模块44,用于将所述传感器对象传递给存储的监听器对象,作为所述监听器对象的回调参数。
可选地,所述拦截模块,用于根据预先配置的拦截传感器接口名称拦截相应的传感器注册接口。
可选地,所述构建模块,具体用于根据所述传感器模拟请求中携带的传感器类型信息,构建相应类型的传感器对象。
可选地,所述查找模块,用于根据所述传感器模拟请求中携带的传感器类型信息,从预先定义的传感器类型信息所对应的传感器模拟数据中查找对应的传感器模拟数据;
所述构建模块,具体用于调用传感器事件构造方法,利用查找到的传感器模拟数据构建传感器对象。
可选地,所述接收模块,具体用于接收测试进程通过预先在服务器端创建的套接字socket通信发送的传感器模拟请求,其中,所述传感器模拟请求为所述测试进程运行针对被测应用程序设计的测试脚本后发送的。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
基于同一技术构思,本申请实施例还提供了一种电子设备500,如图5所示,该设备包括:一个或多个处理器510以及存储器520,图5中以一个处理器510为例,该电子设备还可以包括:输入装置530和输出装置540。
处理器510、存储器520、输入装置530和输出装置540可以通过总线或者其他方式连接,图5中以通过总线连接为例。
存储器520作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的模拟传感器的方法对应的程序指令/模块(例如,附图4所示的拦截模块41、提取模块42、构建模块43和传递模块44)。处理器510通过运行存储在存储器520中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中模拟传感器的方法。
存储器520可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据模拟传感器的装置使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器520可选包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至列表项操作的处理装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置530可接收输入的数字或字符信息,以及产生与模拟传感器的装置的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。
所述一个或者多个模块存储在所述存储器520中,当被所述一个或者多个处理器510执行时,执行上述任意方法实施例中的模拟传感器的方法。
本申请实施例还提供了一种计算机可读存储介质,存储为执行上述处理器所需执行的计算机可执行指令,其包含用于执行上述处理器所需执行的程序。
在一些可能的实施方式中,本发明提供的模拟传感器的方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述描述的根据本发明各种示例性实施方式的模拟传感器的方法中的步骤,例如,电子设备可以执行如图2中所示的步骤S21、在启动应用时加载重打包应用,并注册拦截传感器注册接口,步骤S22、提取所述拦截传感器接口请求中注册的传感器事件,监听拦截传感器对象并存储,步骤S23、在接收到传感器模拟请求时,针对所述传感器模拟请求构建传感器对象;以及步骤S24、将构建的传感器对象传递给存储的监听器对象作为所述监听器对象的回调参数和步骤S25、根据监听结果获得传感器事件模拟结果。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本发明的实施方式的用于模拟传感器的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在计算设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种模拟传感器的方法,其特征在于,包括:
在启动应用时加载重打包应用,并创建与测试进程进行通信的服务器端套接字Socketserver,并在通过所述Socketserver接收到所述测试进程发送的测试指令进入包含有传感器事件的页面时,注册拦截传感器接口,以在所述应用中对所述拦截传感器接口的调用进行拦截,其中所述重打包应用包括根据注册拦截传感器接口的程序代码生成的dex文件和所述应用;
提取所述拦截传感器接口中请求注册的传感器事件,将所述传感器事件作为监听器对象进行监听并存储;
在接收到传感器模拟请求时,根据所述传感器模拟请求中携带的传感器类型信息,从预先定义的传感器类型信息所对应的传感器模拟数据中查找对应的传感器模拟数据,并调用传感器事件构造方法,利用查找到的传感器模拟数据构建传感器对象;
将所述传感器对象传递给存储的监听器对象,作为所述监听器对象的回调参数;
根据监听结果获得传感器事件模拟结果,其中所述传感器事件模拟结果由所述应用基于监听回调确定。
2.如权利要求1所述的方法,其特征在于,所述注册拦截传感器接口,具体包括:
根据预先配置的拦截传感器接口名称注册拦截传感器接口。
3.如权利要求1所述的方法,其特征在于,接收传感器模拟请求,具体包括:
接收测试进程通过预先在服务器端创建的套接字socket通信发送的传感器模拟请求,其中,所述传感器模拟请求为所述测试进程运行针对被测应用程序设计的测试脚本后发送的。
4.一种模拟传感器的装置,其特征在于,包括:
注册模块,用于在启动应用时加载重打包应用,并创建与测试进程进行通信的服务器端套接字Socketserver,并在通过所述Socketserver接收到所述测试进程发送的测试指令进入包含有传感器事件的页面时,注册拦截传感器接口,以在所述应用中对所述拦截传感器接口的调用进行拦截,其中所述重打包应用包括根据注册拦截传感器接口的程序代码生成的dex文件和所述应用;
提取模块,用于提取所述拦截传感器接口中请求注册的传感器事件,将所述传感器事件作为监听器对象进行监听并存储;
构建模块,用于在接收到传感器模拟请求时,根据所述传感器模拟请求中携带的传感器类型信息,从预先定义的传感器类型信息所对应的传感器模拟数据中查找对应的传感器模拟数据,并调用传感器事件构造方法,利用查找到的传感器模拟数据构建传感器对象;
传递模块,用于将所述传感器对象传递给存储的监听器对象,作为所述监听器对象的回调参数;
获得模块,用于根据监听结果获得传感器事件模拟结果,其中所述传感器事件模拟结果由所述应用基于监听回调确定。
5.如权利要求4所述的装置,其特征在于,
所述注册模块,用于根据预先配置的拦截传感器接口名称注册拦截传感器接口。
6.如权利要求4所述的装置,其特征在于,
所述接收模块,具体用于接收测试进程通过预先在服务器端创建的套接字socket通信发送的传感器模拟请求,其中,所述传感器模拟请求为所述测试进程运行针对被测应用程序设计的测试脚本后发送的。
7.一种计算装置,其特征在于,包括至少一个处理器、以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行权利要求1~3任一权利要求所述方法的步骤。
8.一种计算机可读介质,其特征在于,其存储有可由终端设备执行的计算机程序,当所述程序在终端设备上运行时,使得所述终端设备执行权利要求1~3任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810123379.3A CN108363609B (zh) | 2018-02-07 | 2018-02-07 | 模拟传感器的方法、装置和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810123379.3A CN108363609B (zh) | 2018-02-07 | 2018-02-07 | 模拟传感器的方法、装置和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108363609A CN108363609A (zh) | 2018-08-03 |
CN108363609B true CN108363609B (zh) | 2021-11-30 |
Family
ID=63005248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810123379.3A Active CN108363609B (zh) | 2018-02-07 | 2018-02-07 | 模拟传感器的方法、装置和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108363609B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114430439A (zh) * | 2020-10-29 | 2022-05-03 | 中兴通讯股份有限公司 | 获取传感器数据的方法和装置、电子设备、可读存储介质 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1534514A (zh) * | 2003-03-28 | 2004-10-06 | 适用于位置感知的架构和系统 | |
CN101105775A (zh) * | 2007-08-29 | 2008-01-16 | 利特国际有限公司 | 在数据存储装置中存储和获取用户数据的方法及数据安全存储装置 |
CN102523240A (zh) * | 2012-01-06 | 2012-06-27 | 北京邮电大学 | 一种基于物联网的传感器资源整合机制 |
KR20130068616A (ko) * | 2011-12-15 | 2013-06-26 | 한국전자통신연구원 | 클라우드 시스템의 센서 데이터 제어 장치 및 그 방법 |
CN103442024A (zh) * | 2013-06-21 | 2013-12-11 | 中国科学院深圳先进技术研究院 | 一种智能移动终端与云端虚拟移动终端同步的系统和方法 |
CN103685355A (zh) * | 2012-09-05 | 2014-03-26 | 云联(北京)信息技术有限公司 | 一种基于云计算的网络游戏运行实现方法 |
CN104268025A (zh) * | 2014-09-30 | 2015-01-07 | 珠海市君天电子科技有限公司 | 一种进程间通信的方法及系统、服务器 |
CN105339974A (zh) * | 2013-06-28 | 2016-02-17 | 惠普发展公司,有限责任合伙企业 | 模拟传感器 |
CN105652728A (zh) * | 2014-11-13 | 2016-06-08 | 西安众智惠泽光电科技有限公司 | 基于arm微控制器的采煤机智能控制系统 |
CN105956480A (zh) * | 2016-05-10 | 2016-09-21 | 上海交通大学 | Android平台传感器数据保护系统 |
CN107465572A (zh) * | 2017-08-02 | 2017-12-12 | 华数传媒网络有限公司 | 智能终端测试方法、装置及系统 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1306430C (zh) * | 2002-12-31 | 2007-03-21 | 上海科泰世纪科技有限公司 | 基于构件的用户自定义事件方法 |
WO2006026659A2 (en) * | 2004-08-31 | 2006-03-09 | Ascential Software Corporation | Services oriented architecture for data integration services |
CN101996077A (zh) * | 2010-09-08 | 2011-03-30 | 海皮士(北京)网络技术有限公司 | 一种在三维客户端中嵌入浏览器的方法和系统 |
CN102063503B (zh) * | 2011-01-06 | 2012-11-07 | 西安理工大学 | 一种针对突发事件的信息集成及数据处理的方法 |
CN105247819B (zh) * | 2013-04-17 | 2019-07-16 | 希斯泰克公司 | 用于利用双重蜂窝接口的机器对机器的通信的网关设备 |
US20160356751A1 (en) * | 2015-06-08 | 2016-12-08 | Lunatech, Llc | Respiration Simulating Analysis And Distribution Device |
CN105117270B (zh) * | 2015-07-29 | 2019-04-12 | 百度在线网络技术(北京)有限公司 | 一种用于模拟传感器的方法和装置 |
US10161801B2 (en) * | 2016-01-19 | 2018-12-25 | Google Llc | Method and apparatus for detecting direction of motion with a passive sensor |
RU2617741C1 (ru) * | 2016-03-14 | 2017-04-26 | Олег Савельевич Кочетов | Стенд для исследований параметров взрывозащитных устройств |
CN106815083B (zh) * | 2016-12-20 | 2019-11-12 | 微梦创科网络科技(中国)有限公司 | 一种基于Memcache协议的客户端异步处理方法及客户端 |
-
2018
- 2018-02-07 CN CN201810123379.3A patent/CN108363609B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1534514A (zh) * | 2003-03-28 | 2004-10-06 | 适用于位置感知的架构和系统 | |
CN101105775A (zh) * | 2007-08-29 | 2008-01-16 | 利特国际有限公司 | 在数据存储装置中存储和获取用户数据的方法及数据安全存储装置 |
KR20130068616A (ko) * | 2011-12-15 | 2013-06-26 | 한국전자통신연구원 | 클라우드 시스템의 센서 데이터 제어 장치 및 그 방법 |
CN102523240A (zh) * | 2012-01-06 | 2012-06-27 | 北京邮电大学 | 一种基于物联网的传感器资源整合机制 |
CN103685355A (zh) * | 2012-09-05 | 2014-03-26 | 云联(北京)信息技术有限公司 | 一种基于云计算的网络游戏运行实现方法 |
CN103442024A (zh) * | 2013-06-21 | 2013-12-11 | 中国科学院深圳先进技术研究院 | 一种智能移动终端与云端虚拟移动终端同步的系统和方法 |
CN105339974A (zh) * | 2013-06-28 | 2016-02-17 | 惠普发展公司,有限责任合伙企业 | 模拟传感器 |
CN104268025A (zh) * | 2014-09-30 | 2015-01-07 | 珠海市君天电子科技有限公司 | 一种进程间通信的方法及系统、服务器 |
CN105652728A (zh) * | 2014-11-13 | 2016-06-08 | 西安众智惠泽光电科技有限公司 | 基于arm微控制器的采煤机智能控制系统 |
CN105956480A (zh) * | 2016-05-10 | 2016-09-21 | 上海交通大学 | Android平台传感器数据保护系统 |
CN107465572A (zh) * | 2017-08-02 | 2017-12-12 | 华数传媒网络有限公司 | 智能终端测试方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108363609A (zh) | 2018-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897562B (zh) | 安装包更新方法、装置、介质以及设备 | |
CN106970790B (zh) | 一种应用程序创建的方法、相关设备及系统 | |
CN104516783B (zh) | 权限控制方法和装置 | |
CN110196795B (zh) | 检测移动终端应用运行状态的方法及相关装置 | |
CN107071052B (zh) | 一种给物联网设备提供云后端服务的装置、系统和方法 | |
CN108345543B (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN112052008B (zh) | 代码检查方法、装置、计算机设备及计算机可读存储介质 | |
CN105630685A (zh) | 程序接口测试方法及装置 | |
CN105164644A (zh) | 钩子框架 | |
CN104615534A (zh) | 接口测试方法和装置 | |
CN111209193B (zh) | 程序的调试方法及装置 | |
CN105677561B (zh) | 移动产品多平台测试方法及系统 | |
CN103544100A (zh) | 便携数据处理设备应用程序的测试方法、系统和客户端 | |
CN111723002A (zh) | 一种代码调试方法、装置、电子设备及存储介质 | |
CN113110939A (zh) | 运行数据的处理方法、装置、计算机设备及存储介质 | |
WO2021244267A1 (zh) | 应用程序的移植方法、装置、设备及介质 | |
CN111475399B (zh) | 虚拟测试方法及装置 | |
KR102488926B1 (ko) | 소프트웨어 개발에서 어드레싱 가능 자산들 | |
CN110851211A (zh) | 用于显示应用信息的方法、装置、电子设备和介质 | |
CN108363609B (zh) | 模拟传感器的方法、装置和存储介质 | |
CN110908708B (zh) | 一种代码发布方法、装置和系统 | |
CN111858383A (zh) | 移动app的数据埋点方法、系统、终端设备及存储介质 | |
CN109840109B (zh) | 用于生成软件开发工具包的方法和装置 | |
CN110737454A (zh) | 软件项目更新方法、装置、计算机设备及存储介质 | |
CN107741895B (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 |