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

振动方法和振动装置与流程

2022-09-02 21:40:33 来源:中国专利 TAG:


1.本技术涉及终端领域,具体涉及一种振动方法和振动装置。


背景技术:

2.终端设备通常包含马达,马达能够为终端设备提供振动功能,使得终端设备作为一种振动装置被用户使用。当用户在终端设备上进行操作时,终端设备可以通过振动使得用户感知该操作的结果。例如,当用户长按应用程序(application,app)图标时,终端设备在该app图标被选中后通过持续时间为30ms的短振提醒该用户进行下一步操作;当用户长摁计算器删除按钮删除输入信息时,终端设备在该输入信息被删除后通过持续时间为170ms的间隔长振提醒该用户进行下一步操作。
3.由此可见,在一些类似的场景中,振动的目的也类似,但是振动效果却有较大的差异,从而给用户带来负面体验。如何提高类似场景中振动效果的一致性是当前需要解决的问题。


技术实现要素:

4.本技术实施例提供了一种振动方法、振动装置、计算机可读存储介质和计算机程序产品,能够提高类似场景中振动效果的一致性。
5.第一方面,提供了一种振动方法,包括:接收第一事件;响应于所述第一事件,生成第一波形描述符;将第一波形描述符转换为第二波形描述符,第二波形描述符与多个波形描述符存在对应关系,该多个波形描述符包括第一波形描述符;根据第二波形描述符获取目标振动数据;根据目标振动数据驱动马达进行振动。
6.上述方法可以由终端设备或者终端设备中的芯片执行。第一事件可以由用户在终端设备上的第一操作触发,例如,当用户在app界面上操作时,触发终端设备生成的波形描述符通常是app开发者选择的,由于不同app开发者在选择波形描述符的考虑不同,不同app在相似场景中振动效果难以达到一致。本实施例提供的振动方法将第一波形描述符(例如,app开发者选择的波形描述符)转换为第二波形描述符(例如,终端设备针对一些类似场景统一设置的波形描述符),能够提高类似场景中振动效果的一致性。相比于通过开发条款限制app开发者对波形描述符的选择,本技术减小了提高振动效果的一致性的成本。
7.在一种实现方式中,根据所述目标振动数据驱动马达进行振动,包括:当目标振动数据的振动时长大于时间阈值时,从内存中的波形数据库中获取目标振动数据对应的波形数据;当目标振动数据的振动时长小于或等于时间阈值时,通过波形生成算法生成目标振动数据对应的波形数据;根据波形数据驱动马达进行振动。
8.马达驱动获取第二波形描述符后,还需要根据第二波形描述符查找目标振动数据,再将目标振动数据转换为能够直接被马达识别的波形数据后才能驱动马达进行振动。当目标振动数据的振动时长较长(大于时间阈值)时,马达驱动可以从内存中的波形数据库中读取波形数据,无需通过波形生成算法生成波形数据,从而减轻了处理器的负担和功耗。
当目标振动数据的振动时长较短(小于或等于时间阈值)时,马达驱动可以直接通过波形生成算法将目标振动数据转换为波形数据,这样,内存不需要存储短振动的波形数据,从而节约了内存空间。
9.在一种实现方式中,根据目标振动数据驱动马达进行振动,包括:当通过波形生成算法生成目标振动数据对应的波形数据时,将目标振动数据分解为多个子振动数据,该多个子振动数据包括第一振动数据和第二振动数据,第一振动数据的振动时机早于第二振动数据的振动时机;将第一振动数据转换为第一波形数据;根据第一波形数据驱动马达进行振动;将第二振动数据转换为第二波形数据;根据第二波形数据驱动马达进行振动。
10.振动通常是一个持续性或者间歇性的过程,马达驱动可以先将目标振动数据中的第一振动数据转换为第一波形数据,通过第一波形数据驱动马达振动,在马达振动的过程中马达驱动将第二振动数据转换为第二波形数据,在马达处理完第一波形数据前将第二波形数据传递至马达,从而快速驱动马达进行振动,减小振动延迟。
11.在一种实现方式中,第一振动数据与第二振动数据对应的振动之间存在振动间隔。
12.马达驱动在分解目标振动数据时,可以按照振动间隔进行划分,将振动间隔作为第一振动数据与第二振动数据的划界标识,例如,目标振动数据的振动效果为60ms振动、50ms静止(即,振动间隔)、60ms振动,则第一振动数据可以是前60ms振动对应的振动数据,第二振动数据可以是后60ms振动对应的振动数据,这样,马达驱动可以有更充足的时间(110ms)将第二振动数据转换为波形数据,使得本实施例可以应用在一些处理能力较弱的终端设备上,减小处理能力较弱的终端设备的振动延迟。
13.在一种实现方式中,根据预设对应关系将第一波形描述符转换为第二波形描述符之前,上述方法还包括:校验第一波形描述符,生成校验结果;根据预设对应关系将第一波形描述符转换为第二波形描述符,包括:当校验结果指示第一波形描述符为本地存储的波形描述符时,根据预设对应关系将第一波形描述符转换为第二波形描述符。
14.校验第一波形描述符能够确定终端设备是否保存了第一波形描述符和第二波形描述符的对应关系,因此,在转换第一波形描述符前校验第一波形描述符能够避免第一波形描述符转换失败导致的振动异常。
15.在一种实现方式中,校验第一波形描述符,生成校验结果,包括:振动管理器校验第一波形描述符,生成校验结果;所述方法还包括:振动管理器将第一波形描述符和校验结果发送至振动服务,振动服务用于将第一波形描述符转换为第二波形描述符。
16.在一种实现方式中,所述方法还包括:振动服务通过java本地接口将第二波形描述符发送至马达驱动,马达驱动用于根据第二波形描述符获取目标振动数据。
17.在一种实现方式中,响应于所述第一事件,生成第一波形描述符,包括:app响应于第一事件,生成第一波形描述符;所述方法还包括:app将第一波形描述符发送至振动管理器,振动管理器用于校验第一波形描述符。
18.在一种实现方式中,所述第一事件为用户的第一操作触发的事件。
19.在一种实现方式中,多个波形描述符为多个具有相同振动目的的振动描述符。
20.在一种实现方式中,相同振动目的包括:持续性提醒、注意力唤醒、滑动选择器、字母索引条、拖拽场景辅助定位、长按反馈、点击反馈、滑动反馈、双指捏合反馈、极限反馈、成
功反馈、失败反馈或无界面反馈。
21.在一种实现方式中,还包括:显示振动设置界面;接收用户在振动设置界面上的第二操作,第二操作用于选择统一振动模式;根据第二操作激活统一振动模式;根据预设对应关系将第一波形描述符转换为第二波形描述符,包括:当统一振动模式处于激活状态时,根据预设对应关系将第一波形描述符转换为第二波形描述符。
22.不同用户的喜好不同,若用户喜欢通用的振动方式,则可以在振动设置界面激活统一振动模式,终端设备可以将一些个性的振动模式(如,第一波形描述符的振动模式)转换为通用的振动模式(如,第二波形描述符对应的振动模式);若用户喜欢的个性的振动方式,则可以在振动设置界面去激活统一振动模式,终端设备不再转换波形描述符,而是按照个性振动模式(如,第一波形描述符的振动模式)进行振动。本实施例通过振动设置界面可以满足不同用户的喜好,从而提高了用户体验。
23.在一种实现方式中,多个波形描述符包括第三波形描述符,所述方法还包括:接收第二事件;响应于所述第二事件,生成第三波形描述符;将第三波形描述符转换为第二波形描述符;根据第二波形描述符获取目标振动数据;根据目标振动数据驱动马达进行振动。
24.在一种实现方式中,还包括:记录第二波形描述符的使用次数;向服务器发送使用次数。
25.终端设备可以统计用户(如,试用用户)使用第二波形描述符的次数,即,经过转换得到第二振动描述的次数,使得开发人员可以对常用的第二波形描述符的振动效果进行优化,减小常用的第二波形描述符的功耗,或者,开发人员可以对常用的第二波形描述符的振动效果进行微调,让用户感知更细腻的振动效果。
26.第二方面,提供了一种振动装置,包括用于执行第一方面中任一种方法的单元。该装置可以是终端设备,也可以是终端设备内的芯片。该装置可以包括输入单元和处理单元。
27.当该装置是终端设备时,该处理单元可以是处理器,该输入单元可以是通信接口;该终端设备还可以包括存储器,该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该终端设备执行第一方面中的任一种方法。
28.当该装置是终端设备内的芯片时,该处理单元可以是芯片内部的逻辑处理单元,该输入单元可以是输出接口、管脚或电路等;该芯片还可以包括存储器,该存储器可以是该芯片内的存储器(例如,寄存器、缓存等),也可以是位于该芯片外部的存储器(例如,只读存储器、随机存取存储器等);该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该芯片执行第一方面的任一种方法。
29.第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序代码,当所述计算机程序代码被振动装置运行时,使得该装置执行第一方面中的任一种方法。
30.第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码被振动装置运行时,使得该装置执行第一方面中的任一种方法。
附图说明
31.图1是一种适用于本技术的装置的硬件系统的示意图;
32.图2是一种适用于本技术的装置的软件系统的示意图;
33.图3是一种适用于本技术的应用场景的示意图;
34.图4是用户在触控屏上操作时,装置100的处理过程的示意图;
35.图5是本技术实施例提供的一种振动方法的示意图;
36.图6是本技术实施例提供的一种生成波形数据的方法的示意图;
37.图7是本技术实施例提供的另一种生成波形数据的方法的示意图;
38.图8是本技术实施例提供的再一种生成波形数据的方法的示意图;
39.图9是本技术实施例提供的一种设置振动模式的界面的示意图。
具体实施方式
40.下面将结合附图,对本技术实施例中的技术方案进行描述。
41.图1示出了一种适用于本技术的装置的硬件系统。
42.装置100可以是手机、智慧屏、平板电脑、可穿戴电子设备、车载电子设备、增强现实(augmented reality,ar)设备、虚拟现实(virtual reality,vr)设备、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,umpc)、上网本、个人数字助理(personal digital assistant,pda)、投影仪等等,本技术实施例对装置100的具体类型不作任何限制。
43.装置100可以包括处理器110,存储器120,传感器130,马达140,显示屏150。其中传感器130可以包括压力传感器130a,触摸传感器130b等。
44.需要说明的是,图1所示的结构并不构成对装置100的限定。在本技术另一些实施例中,装置100可以包括比图1所示的部件更多或更少的部件,或者,装置100可以包括图1所示的部件中某些部件的组合,或者,装置100可以包括图1所示的部件中某些部件的子部件。图1示的部件可以以硬件、软件、或软件和硬件的组合实现。
45.处理器110可以包括一个或多个处理单元。例如,处理器110可以包括以下处理单元中的至少一个:应用处理器(application processor,ap)、调制解调处理器、图形处理器(graphics processing unit,gpu)、图像信号处理器(image signal processor,isp)、控制器、视频编解码器、数字信号处理器(digital signal processor,dsp)、基带处理器、神经网络处理器(neural-network processing unit,npu)。其中,不同的处理单元可以是独立的器件,也可以是集成的器件。
46.控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
47.处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
48.在一些实施例中,处理器110可以包括一个或多个接口。例如,处理器110可以包括以下接口中的至少一个:内部集成电路(inter-integrated circuit,i2c)接口、移动产业处理器接口(mobile industry processor interface,mipi)、通用输入输出(general-purpose input/output,gpio)接口。
49.i2c接口是一种双向同步串行总线,包括一根串行数据线(serial data line,
sda)和一根串行时钟线(derail clock line,scl)。在一些实施例中,处理器110可以包含多组i2c总线。处理器110可以通过不同的i2c总线接口分别耦合触摸传感器130b等。例如:处理器110可以通过i2c接口耦合触摸传感器130b,使处理器110与触摸传感器130b通过i2c总线接口通信,实现装置100的触摸功能。
50.mipi接口可以被用于连接处理器110与显示屏150等外围器件。mipi接口包括显示屏串行接口(display serial interface,dsi)等。在一些实施例中,处理器110和显示屏150通过dsi接口通信,实现装置100的显示功能。
51.gpio接口可以通过软件配置。gpio接口可以被配置为控制信号接口,也可被配置为数据信号接口。在一些实施例中,gpio接口可以用于连接处理器110与显示屏150和传感器130。gpio接口还可以被配置为i2c接口或mipi接口。
52.图1所示的各模块间的连接关系只是示意性说明,并不构成对装置100的各模块间的连接关系的限定。可选地,装置100的各模块也可以采用上述实施例中多种连接方式的组合。
53.装置100可以通过gpu、显示屏150以及应用处理器实现显示功能。gpu为图像处理的微处理器,连接显示屏150和应用处理器。gpu用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个gpu,其执行程序指令以生成或改变显示信息。
54.显示屏150可以用于显示图像或视频。显示屏150包括显示面板。显示面板可以采用液晶显示屏(liquid crystal display,lcd)、有机发光二极管(organic light-emitting diode,oled)、有源矩阵有机发光二极体(active-matrix organic light-emitting diode,amoled)、柔性发光二极管(flex light-emitting diode,fled)、迷你发光二极管(mini light-emitting diode,mini led)、微型发光二极管(micro light-emitting diode,micro led)、微型oled(micro oled)或量子点发光二极管(quantum dot light emitting diodes,qled)。在一些实施例中,装置100可以包括1个或n个显示屏150,n为大于1的正整数。
55.存储器120可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。存储器120可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能(例如,声音播放功能和图像播放功能)所需的应用程序。存储数据区可存储装置100使用过程中所创建的数据(例如,波形数据)。此外,存储器120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如:至少一个磁盘存储器件、闪存器件和通用闪存存储器(universal flash storage,ufs)等。处理器110通过运行存储在存储器120的指令和/或存储在设置于处理器中的存储器的指令,执行装置100的各种处理方法。
56.压力传感器130a用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器130a可以设置于显示屏150。压力传感器130a的种类很多,例如可以是电阻式压力传感器、电感式压力传感器或电容式压力传感器。电容式压力传感器可以是包括至少两个具有导电材料的平行板,当力作用于压力传感器130a,电极之间的电容改变,装置100根据电容的变化确定压力的强度。当触摸操作作用于显示屏150时,装置100根据压力传感器130a检测所述触摸操作。装置100也可以根据压力传感器130a的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用
图标时,执行查看短消息的指令;当触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
57.触摸传感器130b,也称为触控器件。触摸传感器130b可以设置于显示屏150,由触摸传感器130b与显示屏150组成触摸屏(touch panel,tp),触摸屏也称为触控屏。触摸传感器130b用于检测作用于其上或其附近的触摸操作。触摸传感器130b可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏150提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器130b也可以设置于装置100的表面,并且与显示屏150设置于不同的位置。
58.马达140可以产生振动。马达140可以用于消息提示,也可以用于触摸反馈。马达140可以对作用于不同应用程序的触摸操作产生不同的振动反馈效果。对于作用于显示屏150的不同区域的触摸操作,马达140也可产生不同的振动反馈效果。不同的应用场景(例如,时间提醒、接收信息、闹钟和游戏)可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
59.上文详细描述了装置100的硬件系统,下面介绍装置100的软件系统。软件系统可以采用分层架构、事件驱动架构、微核架构、微服务架构或云架构,本技术实施例以分层架构为例,示例性地描述装置100的软件系统。
60.如图2所示,采用分层架构的软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,软件系统可以分为四层,从上至下分别为应用程序层、应用程序框架层、系统库、安卓运行时以及内核层。
61.应用层可以包括一系列应用程序包。如图2所示,应用程序包可以包括电话、邮箱、网络等应用程序。
62.应用程序框架层为应用层的应用程序提供应用编程接口(application programming interface,api)和编程框架。应用程序框架层包括一些预先定义的函数。
63.如图2所示,应用程序框架层可以包括振动管理器(vibrator manager)、振动服务(vibratorservice)等。
64.振动管理器和振动服务用于管理装置100的振动效果,其中,振动管理器用于与app进行交互,振动服务用于与马达驱动进行交互。
65.例如,当app需要实现一个振动效果时,app可以将该振动效果对应的波形描述符传递至振动管理器;随后,振动管理器将该波形描述符传递至振动服务;振动服务通过java本地接口(java native interface,jni)将该波形描述符传递至马达驱动,马达驱动基于该波形描述符确定波形数据,通过波形数据控制马达140进行振动。
66.android runtime包括核心库和虚拟机。android runtime负责安卓系统的调度和管理。
67.核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
68.应用层和应用程序框架层运行在虚拟机中。虚拟机将应用层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
69.系统库可以包括多个功能模块。例如:函数库、输入处理库等。
70.函数库提供c语言中所使用的宏、类型定义、字符串操作函数、数学计算函数以及输入输出函数等。
71.输入处理库用于处理输入设备的库,可以实现鼠标、键盘和触摸输入处理等。
72.内核层是硬件和软件之间的层。内核层可以包含tp驱动、马达驱动等。
73.tp驱动用于处理tp生成的包含电容值的原始数据,例如,将原始数据转换为触摸事件。
74.马达驱动用于控制马达140进行振动,例如,马达驱动获取波形数据后,将波形数据传递至马达140,马达140按照先进先出(first input first output,fifo)的处理方式处理波形数据,根据波形数据的指示进行振动。
75.下面结合触摸振动场景,示例性地说明装置100的软件以及硬件的工作流程。
76.图3是本技术提供的一种触摸场景,用户在图3所示的无线网络界面上进行下拉操作,对该无线网络界面进行刷新。刷新完成后,装置100振动一次,通过振动提示用户无线网络界面已完成刷新。
77.装置100接收到下拉操作后的处理过程可以分为以下几个阶段,如图4所示。
78.tp响应阶段:
79.tp响应阶段是装置100识别用户操作的阶段。用户的手指接触tp使得tp的状态发生变化,触发tp生成原始数据;随后,tp将该原始数据发送至处理器110。
80.当tp为电容触摸屏时,原始数据为包含电容值的数据,tp还可以是其他类型的触控屏,本技术对tp的具体类型不做限定。
81.app响应阶段:
82.内核层的tp驱动获取原始数据后,将原始数据转换为报点数据,报点数据包含触摸坐标、触摸压力、触摸区域形态等信息。随后,报点数据在应用程序框架层被转换为触摸事件,并被传递至触摸区域对应的app,即,无线网络app。无线网络app基于触摸事件进行网络刷新操作。网络刷新操作完成后,无线网络app生成波形描述符,波形描述符经过振动管理器、振动服务和jni传递至马达驱动。马达驱动对波形描述符进行处理,确定马达140振动所需的波形数据,并将波形数据传递至马达140。app响应阶段可以由处理器110完成。
83.马达振动阶段:
84.马达140收到波形数据后,按照fifo处理方式处理波形数据,根据波形数据的指示进行振动。
85.需要说明的是,对于多次操作,各个操作的处理阶段没有时序关系。例如,用户在图3所示的无线网络界面上进行了第一次下拉操作后,装置100进入app响应阶段和马达振动阶段,在马达振动的过程中,用户进行了第二次下拉操作,装置100无需等待马达振动完成再进入第二次下拉操作的tp响应阶段。
86.装置100的应用场景中存在大量需要马达振动的场景,如表1所示。
87.表1
[0088][0089][0090]
表1中,一些振动场景具有相同的振动目的,例如,长按应用图标和长按图片的振动目的均为长按反馈,可以使用相同的振动效果。然而,描述振动效果的波形描述符通常是
app开发者选择的,由于不同app开发者在选择的波形描述符可能不同,导致在相似场景中振动效果难以达到一致。
[0091]
本技术实施例提供了一种振动方法,该方法在装置100中预设一个对应关系表,该对应关系表用于将相似场景中的波形描述符转换为一种波形描述符。随后,马达驱动根据转换后的波形描述符在振动数据表中查找目标振动数据,随后将目标振动数据转换为波形数据,将波形数据送入马达140驱动马达140振动。
[0092]
下面结合图5详细介绍本技术实施例提供的振动方法。如图5所示,该振动方法包括如下内容。
[0093]
s501,网络app响应于用户的第一操作,生成第一波形描述符。
[0094]
第一操作可以是图3所示的下拉操作,也可以是其他操作。此外,网络app也可以响应于通知消息,生成第一波形描述符,例如,网络app收到无线局域网(wireless local area network,wlan)1的用于指示网络连接成功的响应消息后,可以生成第一波形描述符,通过第一波形描述符控制马达140振动。
[0095]
s502,网络app向振动管理器发送第一波形描述符。
[0096]
s503,振动管理器校验第一波形描述符。
[0097]
振动管理器可以根据第一波形描述符校验第一波形描述符。示例性的,若对应关系表存储有第一波形描述符,则校验通过;若对应关系表未存储第一波形描述符,则校验失败。其中,对应关系表可以在装置100出厂前预设在装置100中,在后续的使用过程中,装置100的厂商可以通过系统升级服务维护对应关系表。
[0098]
s504,振动管理器向振动服务发送校验结果和第一波形描述符。
[0099]
s505,当校验结果指示校验通过时,振动服务将第一波形描述符转换为第二波形描述符。
[0100]
若校验结果指示校验通过,说明对应关系表保存了与第一波形描述符对应的第二波形描述符,振动服务能够根据对应关系将第一波形描述符转换为第二波形描述符;若校验结果指示校验失败,说明对应关系表未保存与第一波形描述符对应的第二波形描述符,振动服务无需再对第一波形描述符进行转换,可以避免第一波形描述符转换失败导致的振动异常。
[0101]
上述振动异常的原因在于:若对应关系表未保存与第一波形描述符对应的第二波形描述符,对第一波形描述符进行转换得到的结果为空,马达驱动无法获取转换后的描述符,也就无法驱动马达140进行振动,导致振动异常。
[0102]
因此,对于校验结果指示校验失败的场景,振动服务可以直接将第一波形描述符发送至马达驱动,保证马达140能够对用户的操作做出反应。
[0103]
示例性的,表2是本技术实施例提供的一种对应关系表。
[0104]
表2
[0105][0106]
表2示出了4种第一波形描述符,该4种第一波形描述符对应的振动场景均为长按界面上的某个对象,且振动目的均为长按反馈,因此,可以将该4种第一波形描述符进行归一化处理,即,将该4种第一波形描述符转换为第二波形描述符。需要说明的是,第二波形描述符可以与第一波形描述符相同,也可以与第一波形描述符不同。例如,第二波形描述符的振动效果可以与haptic.calculator.delete_long_press或haptic.common.delete_long_press的振动效果相同,也可以是一个与第一波形描述符的振动效果不同的振动效果,本技术对此不做限定。
[0107]
表2中的第二波形描述符可以被更新,例如,装置100通过系统升级的方式将表2中的第二波形描述符替换为一个新的波形描述符,使得用户可以体验新的振动效果。
[0108]
s506,振动服务统计第二波形描述符的使用次数。
[0109]
振动服务可以统计用户(如,beta用户)使用第二波形描述符的次数,即,经过转换得到第二振动描述的次数。进而将该次数发送至服务器,使得开发人员可以对常用的第二波形描述符的振动效果进行优化,减小常用的第二波形描述符的功耗。
[0110]
s507~s508,振动服务通过jni向马达驱动发送第二波形描述符。
[0111]
jni封装了硬件相关的操作,振动服务能够通过jni向马达驱动发送第二波形描述符,触发马达驱动执行第二描述符相关的操作,例如,s509和s510。
[0112]
s509,马达驱动根据第二波形描述符获取目标振动数据。
[0113]
第二波形描述符是一个振动参数集合的标识,例如,该振动参数集合可以包含振动时长、振动频率和振动振幅等。装置100存储有振动数据表,振动数据表包含波形描述符与振动参数集合的对应关系,马达驱动可以在振动数据表中查找与第二波形描述符对应的振动参数集合,即,目标振动数据。
[0114]
马达140不能直接处理目标振动数据,因此,马达驱动还需要将目标振动数据转换为马达140能够处理的数据,即,波形数据。
[0115]
s510,马达驱动将目标振动数据转换为波形数据。
[0116]
一种将目标振动数据转换为波形数据的方法是:马达驱动直接从内存中读取预设的波形数据,即,处理器110从存储器120中的高速随机存取存储器中读取预设的波形数据。处理器110可以在装置100开机时将波形数据库从存储器120中的非易失性存储器中读取到高速随机存取存储器中。当马达驱动需要获取波形数据时,可以从内存中的波形数据库中快速找到波形数据。该方法无需处理器110通过波形生成算法生成波形数据,从而减小了处理器110的负载和功耗,并且减小了振动延迟。
[0117]
另一种将目标振动数据转换为波形数据的方法是:马达驱动通过波形生成算法处理目标振动数据,生成波形数据。其中,马达驱动可以通过下列两种方式生成波形数据。
[0118]
方式一:
[0119]
马达驱动将全部目标振动数据转换为波形数据后将该波形数据发送至马达140,驱动马达140进行振动。
[0120]
方式二:
[0121]
马达驱动将部分目标振动数据转换为波形数据后将该波形数据发送至马达140,在马达140的振动的过程中,马达驱动继续将剩余的目标振动数据转换为波形数据,再将剩余的这部分波形数据发送至马达140。
[0122]
例如,目标振动数据的振动效果为60ms振动、50ms静止(即,振动间隔)、60ms振动。
[0123]
图6示出了按照方式一生成波形数据的例子。目标振动数据包含振动数据a和振动数据b,振动数据a对应0ms~60ms的振动(图6中0ms~60ms的锯齿线所示),振动数据b对应110ms~170ms的振动(图6中110ms~170ms的锯齿线所示)。马达驱动在获取振动数据a和振动数据b后,需要将振动数据a和振动数据b全部转换为波形数据后才能驱动马达140进行振动。图6中两个锯齿线之间的直线表示振动间隔。
[0124]
图7示出了按照方式二生成波形数据的例子。马达驱动在获取目标振动数据后,先将振动数据a转换为波形数据a,随后将波形数据a发送至马达140。在马达140根据波形数据a进行振动的期间,马达驱动将振动数b转换为波形数据b,再将波形数据b发送至马达140。对比图6和图7可知,方式二只需将振动数据a转换为波形数据a就可以驱动马达140振动,无需等待目标振动数据全部转换为波形数据,从而减小了振动延迟。
[0125]
此外,图7所示的振动效果包含50ms的振动间隔,因此,在转换振动数据时可以以振动间隔为划界标识,先转换振动间隔之前的振动数据,再转换振动间隔之后的振动数据,这样,马达驱动除了可以利用“0ms~60ms的振动时间”之外,还可以利用“60ms~110ms的振动间隔”将振动数据b转换为波形数据b,这种方式尤其适用于一些处理能力较弱的终端设备。
[0126]
图8示出了另一个按照方式二生成波形数据的例子。马达驱动可以以30ms为单位,将目标振动数据(振动数据a和振动数据b)分解为4个子振动数据,分别为振动数据1、振动数据2、振动数据3和振动数据4。该4个子振动数据对应两个60ms的振动。
[0127]
马达驱动可以先将振动数据1(第一个60ms振动的前30ms振动对应的振动数据)转换为波形数据,即,生成波形数据1,随后马达驱动将波形数据1传递至马达140,驱动马达140进行振动。在马达140根据波形数据1进行振动的过程中,马达驱动将振动数据2(第一个60ms振动的后30ms振动对应的振动数据)转换为波形数据,即,生成波形数据2,随后马达驱动将波形数据2传递至马达140,驱动马达140进行振动。以此类推,在马达140根据波形数据
2进行振动的过程中,马达驱动将振动数据b分解为振动数据3和振动数据4,随后,在振动间隔内将振动数据3转换为波形数据3,在马达140根据波形数据3进行振动的过程中,马达驱动将振动数据4转换为波形数据4。
[0128]
图8所示的例子中,马达驱动将部分振动数据a转换为波形数据后即可驱动马达140进行振动,无需等待振动数据a全部转换为波形数据,相比于图7所示的例子进一步减小了驱动延迟,适用于一些处理能力较强的终端设备。
[0129]
可选地,马达驱动将目标振动数据转换为波形数据之前,可以根据目标振动数据的振动时长选择转换方式。
[0130]
例如,当目标振动数据的振动时长较长(大于时间阈值)时,马达驱动可以从内存中的波形数据库中读取波形数据,无需通过波形生成算法生成波形数据,从而减轻了处理器的负担和功耗。当目标振动数据的振动时长较短(小于或等于时间阈值)时,马达驱动可以直接通过波形生成算法将目标振动数据转换为波形数据,这样,内存不需要存储短振动的波形数据,从而节约了内存空间。
[0131]
获取波形数据后,马达驱动执行下列步骤。
[0132]
s511,马达驱动向马达140发送波形数据。
[0133]
s512,马达根据目标波形数据进行振动。
[0134]
马达140收到标波形数据或最终波形数据后,按照fifo处理方式进行处理,根据标波形数据或最终波形数据的指示进行振动。
[0135]
上述方法中,第一波形描述符通常是app开发者选择的,由于不同app开发者在选择波形描述符的考虑不同,不同app在相似场景中振动效果难以达到一致。本实施例提供的振动方法将第一波形描述符转换为第二波形描述符,能够提高类似场景中振动效果的一致性。相比于通过开发条款限制app开发者对波形描述符的选择,上述方法减小了提高振动效果的一致性的成本。
[0136]
上文详细描述了本技术提供的提高振动效果的一致性的方法。然而,一些用户可能喜欢个性化的振动效果,本技术还提供了一种使用户能够自由选择振动效果的实施例。
[0137]
如图9所示,用户进入声音和振动设置界面后,可以点击“振动效果归一化”的开关,激活统一振动模式。可选地,用户还可以点击不同的振动场景的开关,激活不同的振动场景的统一振动模式。本技术对用户激活统一振动模式的具体方式不做限定。
[0138]
当用户在图3所示的界面执行下拉操作时,振动服务可以检测统一振动模式是否激活。当统一振动模式处于激活状态时,振动服务根据预设对应关系将第一波形描述符转换为第二波形描述符,随后通过jni将第二波形描述符传递至马达驱动。当统一振动模式处于去激活状态时,振动服务直接通过jni将第一波形描述符传递至马达驱动。
[0139]
由此可见,图9所示的声音和振动设置界面可以为用户提供不同的振动模式,提高了用户体验。
[0140]
本技术还提供了一种计算机程序产品,该计算机程序产品被处理器执行时实现本技术中任一方法实施例所述的方法。
[0141]
该计算机程序产品可以存储在存储器中,经过预处理、编译、汇编和链接等处理过程最终被转换为能够被处理器执行的可执行目标文件。
[0142]
该计算机程序产品也可以固化在芯片中的代码。本技术对计算机程序产品的具体
形式不做限定。
[0143]
本技术还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本技术中任一方法实施例所述的方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。
[0144]
该计算机可读存储介质可以是易失性存储器或非易失性存储器,或者,可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(read-only memory,rom)、可编程只读存储器(programmable rom,prom)、可擦除可编程只读存储器(erasable prom,eprom)、电可擦除可编程只读存储器(electrically eprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(random access memory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(static ram,sram)、动态随机存取存储器(dynamic ram,dram)、同步动态随机存取存储器(synchronous dram,sdram)、双倍数据速率同步动态随机存取存储器(double data rate sdram,ddr sdram)、增强型同步动态随机存取存储器(enhanced sdram,esdram)、同步连接动态随机存取存储器(synchlink dram,sldram)和直接内存总线随机存取存储器(direct rambus ram,dr ram)。
[0145]
本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和设备的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。
[0146]
在本技术所提供的几个实施例中,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例的一些特征可以忽略,或不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或其它形式的连接。
[0147]
应理解,在本技术的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术的实施例的实施过程构成任何限定。
[0148]
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0149]
总之,以上所述仅为本技术技术方案的较佳实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
再多了解一些

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

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

相关文献