滑动丢帧检测的方法和装置转让专利

申请号 : CN202111426818.6

文献号 : CN114327127B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 崔鹏飞

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

摘要 :

本申请涉及终端领域,提供了一种滑动丢帧检测的方法和装置。该方法应用于电子设备,用户触发电子设备生成触摸事件后,触摸事件在电子设备的各个模块间传递,由于触摸事件通常不能携带操作类型信息,当丢帧事件发生时,电子设备的丢帧检测模块不能确定该丢帧事件是否为滑动丢帧事件。本申请提供的方法在确定用户操作的操作类型后,根据操作类型更新滑动操作标签;该标签是一个独立于触摸事件的变量,这样,当帧图像数据的生成时间指示丢帧事件发生时,滑动丢帧检测模块可以根据滑动操作标签确定用户操作是否为滑动操作,进而确定滑动丢帧事件是否发生。该方法和装置能够提高滑动丢帧检测的准确性。

权利要求 :

1.一种滑动丢帧检测的方法,其特征在于,应用于电子设备,所述电子设备包括滑动状态检测模块、状态标记模块、绘制合成模块和滑动丢帧检测模块,所述方法包括:所述滑动状态检测模块获取用户的第一操作触发的触摸事件;

所述滑动状态检测模块基于所述触摸事件确定所述第一操作的操作类型;

所述滑动状态检测模块向所述状态标记模块发送滑动操作检测结果和所述触摸事件,其中,所述滑动操作检测结果用于指示所述第一操作的操作类型;

所述状态标记模块基于所述滑动操作检测结果更新滑动操作标签,所述滑动操作标签为视图上下文中的标签;

所述状态标记模块向APP发送所述触摸事件,所述触摸事件用于生成视图布局变化内容;

所述绘制合成模块基于所述视图布局变化内容生成帧图像数据;

所述绘制合成模块向所述滑动丢帧检测模块发送所述帧图像数据的生成时间;

所述滑动丢帧检测模块获取所述滑动操作标签;

当所述帧图像数据的生成时间超过阈值时,并且,当所述滑动操作标签指示所述第一操作为滑动操作时,所述滑动丢帧检测模块生成滑动丢帧信息。

2.根据权利要求1所述的方法,其特征在于,所述滑动状态检测模块基于所述触摸事件确定所述第一操作的操作类型,包括:当所述触摸事件为移动事件或按压事件时,所述滑动状态检测模块确定所述第一操作的操作类型为所述滑动操作。

3.根据权利要求1所述的方法,其特征在于,所述滑动状态检测模块基于所述触摸事件确定所述第一操作的操作类型,包括:当所述触摸事件为抬起事件或取消事件时,并且,当所述滑动状态检测模块在接收所述触摸事件之前接收到移动事件或按压事件时,所述滑动状态检测模块确定所述第一操作的操作类型为非滑动操作。

4.根据权利要求1至3中任一项所述的方法,其特征在于,所述电子设备包括滑动丢帧上报模块、检测驱动模块和检测服务模块,所述方法还包括:所述滑动丢帧上报模块根据所述滑动丢帧信息生成滑动丢帧事件;

所述滑动丢帧上报模块通过所述检测驱动模块向所述检测服务模块发送所述滑动丢帧事件。

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

所述检测服务模块根据所述滑动丢帧事件获取所述电子设备的负载信息;

所述检测服务模块向服务器发送所述负载信息。

6.根据权利要求1至3中任一项所述的方法,其特征在于,所述电子设备包括通用丢帧检测模块,所述方法还包括:当所述帧图像数据的生成时间超过所述阈值时,并且,当所述滑动操作标签指示所述第一操作为非滑动操作时,所述通用丢帧检测模块生成非滑动丢帧信息。

7.根据权利要求1至3中任一项所述的方法,其特征在于,当所述滑动操作检测结果指示所述第一操作的操作类型为滑动操作时,所述状态标记模块将所述滑动操作标签更新为真值true;当所述滑动操作检测结果指示所述第一操作的操作类型为非滑动操作时,所述状态标记模块将所述滑动操作标签更新为假值false。

8.根据权利要求1至3中任一项所述的方法,其特征在于,所述第一操作的操作类型包括:单向滑动操作、拖动滑动操作、双向滑动操作或多指滑动操作。

9.一种滑动丢帧检测装置,其特征在于,包括处理器和存储器,所述处理器和所述存储器耦合,所述存储器用于存储计算机程序,当所述计算机程序被所述处理器执行时,使得所述装置执行权利要求1至8中任一项所述的方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,使得所述处理器执行权利要求1至8中任一项所述的方法。

11.一种芯片系统,其特征在于,所述芯片系统包括处理器和通信接口;所述处理器用于从存储介质中调用并运行所述存储介质中存储的计算机程序,执行如权利要求1至8中任一项所述的方法。

说明书 :

滑动丢帧检测的方法和装置

技术领域

[0001] 本申请涉及终端领域,具体涉及一种滑动丢帧检测的方法和装置。

背景技术

[0002] 终端设备通常包含显示屏,用户可以通过显示屏与终端设备进行交互,例如,用户可以在显示屏上进行滑动操作,控制终端设备显示的用户界面(user interface,UI)。
[0003] 终端设备在显示UI时,除了进行绘制、渲染、合成和显示等处理之外,还需要准确识别用户的操作,其中任何一个环节出现异常,均可能导致UI显示异常。例如,以终端设备的刷新率为60赫兹为例,用户在显示屏上进行了滑动操作,终端设备应当在1秒内显示60帧,若终端设备发生滑动操作识别错误或者内存不足,可能导致终端设备显示了50帧,剩余10帧未显示出来,从而导致丢帧事件发生,对用户体验造成负面影响。由于丢帧事件对应的操作类型难以确定,现有技术难以对滑动操作的丢帧事件进行针对性检测,如何提高滑动丢帧检测的准确性是当前需要解决的问题。

发明内容

[0004] 本申请实施例提供了一种滑动丢帧检测的方法、装置、计算机可读存储介质和计算机程序产品,能够提高滑动丢帧检测的准确性。
[0005] 第一方面,提供了一种滑动丢帧检测的方法,该方法应用于电子设备,该方法包括:
[0006] 获取用户的第一操作触发的触摸事件;
[0007] 根据触摸事件确定第一操作的操作类型;
[0008] 根据操作类型更新滑动操作标签;
[0009] 根据触摸事件生成帧图像数据;
[0010] 当帧图像数据的生成时间超过阈值时,并且,当滑动操作标签指示第一操作为滑动操作时,生成滑动丢帧信息。
[0011] 触摸事件在电子设备的各个模块之间传递时,通常不能携带操作类型信息。因此,电子设备无法根据触摸事件确定第一操作的操作类型,导致工程师无法根据第一操作的操作类型对丢帧事件做出针对性的分析。上述方法中,滑动操作标识是一个独立于触摸事件的信息,电子设备的滑动状态检测模块确定第一操作的操作类型后更新滑动操作标识,这样,电子设备的滑动丢帧检测模块就可以根据滑动操作标识确定第一操作是否为滑动操作。若第一操作为滑动操作,滑动丢帧检测模块可以通过滑动丢帧信息指示当前丢帧事件为滑动丢帧事件,以便于工程师对丢帧事件做出针对性的分析。
[0012] 在一种可选的实施方式中,根据触摸事件确定第一操作的操作类型,包括:
[0013] 当触摸事件为移动事件或按压事件时,确定第一操作的操作类型为滑动操作。
[0014] 移动事件或按压事件均为滑动操作过程中可能发生的事件,将移动事件或按压事件作为判断标准,能够确定第一操作的操作类型。此外,相比于通过控件判断滑动操作的方法,以事件类型作为判断滑动操作的方法能够避免不同控件判断标准的差异,使得滑动操作的判断结果更加准确。
[0015] 在一种可选的实施方式中,根据触摸事件确定第一操作的操作类型,包括:
[0016] 当触摸事件为抬起事件或取消事件时,并且,当滑动状态检测模块在接收触摸事件之前接收到移动事件或按压事件时,确定第一操作的操作类型为非滑动操作。
[0017] 抬起事件或取消事件为滑动操作结束的标识事件,后续出现的丢帧与滑动操作无关,将移动事件或按压事件作为判断标准,能够确定第一操作的操作类型。此外,相比于通过控件判断非滑动操作的方法,以事件类型作为判断非滑动操作的方法能够避免不同控件判断标准的差异,使得非滑动操作的判断结果更加准确。
[0018] 在一种可选的实施方式中,滑动操作标签为视图上下文中的标签。
[0019] 视图上下文是滑动丢帧检测模块可以读取的信息,滑动状态检测模块确定第一操作的操作类型后更新视图上下文中的标签,使得滑动丢帧检测模块可以根据视图上下文中的标签确定第一操作是否为滑动操作,准确识别滑动丢帧事件。
[0020] 在一种可选的实施方式中,电子设备包括滑动丢帧上报模块、检测驱动模块和检测服务模块,该方法还包括:
[0021] 滑动丢帧上报模块根据滑动丢帧信息生成滑动丢帧事件;
[0022] 滑动丢帧上报模块通过检测驱动模块向检测服务模块发送滑动丢帧事件。
[0023] 在一种可选的实施方式中,该方法还包括:
[0024] 检测服务模块根据滑动丢帧事件获取电子设备的负载信息;
[0025] 检测服务模块向服务器发送负载信息。
[0026] 滑动丢帧检测模块确定滑动丢帧事件发生后生成滑动丢帧信息(即,滑动丢帧判断结果),滑动丢帧上报模块根据滑动丢帧信息生成滑动丢帧事件,并将滑动丢帧事件发送至检测服务模块,指示检测服务模块收集滑动丢帧事件发生时电子设备的负载信息,使得工程师能够根据负载信息分析滑动丢帧事件发生的原因,从而提高了滑动丢帧检测的准确性。
[0027] 在一种可选的实施方式中,电子设备包括通用丢帧检测模块,该方法还包括:当帧图像数据的生成时间超过阈值时,并且,当滑动操作标签指示第一操作为非滑动操作时,通用丢帧检测模块生成非滑动丢帧信息。
[0028] 当电子设备确定第一操作为非滑动操作时,可以通过通用丢帧检测模块分析第一操作对应的丢帧原因,在分析丢帧原因时无需考虑滑动丢帧,从而提高了通用丢帧检测的效率。
[0029] 在一种可选的实施方式中,电子设备包括滑动状态检测模块和状态标记模块;获取用户的第一操作触发的触摸事件,包括:滑动状态检测模块获取用户的第一操作触发的触摸事件;基于触摸事件确定第一操作的操作类型,包括:滑动状态检测模块基于触摸事件确定第一操作的操作类型;该方法还包括:滑动状态检测模块向状态标记模块发送滑动操作检测结果和触摸事件,其中,滑动操作检测结果用于指示第一操作的操作类型为滑动操作或非滑动操作。
[0030] 在一种可选的实施方式中,基于操作类型更新滑动操作标识,包括:状态标记模块基于滑动操作检测结果更新滑动操作标识,其中,当所述滑动操作检测结果指示所述第一操作的操作类型为滑动操作时,所述状态标记模块将所述滑动操作标签更新为真值true;当所述滑动操作检测结果指示所述第一操作的操作类型为非滑动操作时,所述状态标记模块将所述滑动操作标签更新为假值false。
[0031] 在一种可选的实施方式中,电子设备还包括绘制合成模块,该方法还包括:状态标记模块向应用程序(application,APP)发送触摸事件;APP向触摸事件对应的控件发送触摸事件;控件向绘制合成模块发送触摸事件。
[0032] 在一种可选的实施方式中,基于触摸事件生成帧图像数据,包括:绘制合成模块基于触摸事件生成帧图像数据;该电子设备还包括滑动丢帧检测模块,该方法还包括:绘制合成模块向滑动丢帧检测模块发送帧图像数据的生成时间。
[0033] 在一种可选的实施方式中,该方法还包括:滑动丢帧检测模块获取滑动操作标签;当帧图像数据的生成时间超过阈值时,并且,当滑动操作标识指示第一操作为滑动操作时,生成滑动丢帧信息,包括:当帧图像数据的生成时间超过阈值时,并且,当滑动操作标签指示第一操作为滑动操作时,滑动丢帧检测模块生成滑动丢帧信息。
[0034] 在一种可选的实施方式中,第一操作的操作类型包括:单向滑动操作、拖动滑动操作、双向滑动操作或多指滑动操作。
[0035] 第二方面,提供了一种滑动丢帧检测的装置,包括用于执行第一方面中任一种方法的单元。该装置可以是终端设备,也可以是终端设备内的芯片。该装置可以包括输入单元和处理单元。
[0036] 当该装置是终端设备时,该处理单元可以是处理器,该输入单元可以是通信接口;该终端设备还可以包括存储器,该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该终端设备执行第一方面中的任一种方法。
[0037] 当该装置是终端设备内的芯片时,该处理单元可以是芯片内部的逻辑处理单元,该输入单元可以是输出接口、管脚或电路等;该芯片还可以包括存储器,该存储器可以是该芯片内的存储器(例如,寄存器、缓存等),也可以是位于该芯片外部的存储器(例如,只读存储器、随机存取存储器等);该存储器用于存储计算机程序代码,当该处理器执行该存储器所存储的计算机程序代码时,使得该芯片执行第一方面的任一种方法。
[0038] 第三方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序代码,当该计算机程序代码被滑动丢帧检测的装置运行时,使得该装置执行第一方面中的任一种方法。
[0039] 第四方面,提供了一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码被滑动丢帧检测的装置运行时,使得该装置执行第一方面中的任一种方法。

附图说明

[0040] 图1是一种适用于本申请的装置的硬件系统的示意图;
[0041] 图2是一种适用于本申请的装置的软件系统的示意图;
[0042] 图3是用户在触控屏上操作时,装置100的处理过程的示意图;
[0043] 图4是电容屏的工作原理的示意图;
[0044] 图5是电容屏的工作原理的另一示意图;
[0045] 图6是本申请实施例提供的几种滑动操作的示意图;
[0046] 图7是一种界面显示流程示意图;
[0047] 图8是图7所示的界面显示流程对应的显示结果的示意图;
[0048] 图9是另一种界面显示流程示意图;
[0049] 图10是图9所示的界面显示流程对应的显示结果的示意图;
[0050] 图11是本申请提供的丢帧检测方法的一个示例;
[0051] 图12是本申请提供的多种touch事件的产生过程的示意图;
[0052] 图13是本申请提供的丢帧检测方法的另一个示例;
[0053] 图14是本申请提供的丢帧检测方法的再一个示例。

具体实施方式

[0054] 下面将结合附图,对本申请实施例中的技术方案进行描述。
[0055] 图1示出了一种适用于本申请的装置的硬件系统。
[0056] 装置100可以是手机、智慧屏、平板电脑、可穿戴电子设备、车载电子设备、增强现实(augmented reality,AR)设备、虚拟现实(virtual reality,VR)设备、笔记本电脑、超级移动个人计算机(ultra‑mobile personal computer,UMPC)、上网本、个人数字助理(personal digital assistant,PDA)、投影仪等等,本申请实施例对装置100的具体类型不作任何限制。
[0057] 装置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等。
[0058] 需要说明的是,图1所示的结构并不构成对装置100的具体限定。在本申请另一些实施例中,装置100可以包括比图1所示的部件更多或更少的部件,或者,装置100可以包括图1所示的部件中某些部件的组合,或者,装置100可以包括图1所示的部件中某些部件的子部件。图1示的部件可以以硬件、软件、或软件和硬件的组合实现。
[0059] 处理器110可以包括一个或多个处理单元。例如,处理器110可以包括以下处理单元中的至少一个:应用处理器(application processor,AP)、调制解调处理器、图形处理器(graphics processing unit,GPU)、图像信号处理器(image signal processor,ISP)、控制器、视频编解码器、数字信号处理器(digital signal processor,DSP)、基带处理器、神经网络处理器(neural‑network processing unit,NPU)。其中,不同的处理单元可以是独立的器件,也可以是集成的器件。
[0060] 控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
[0061] 处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
[0062] 在一些实施例中,处理器110可以包括一个或多个接口。例如,处理器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)接口、SIM接口、USB接口。
[0063] I2C接口是一种双向同步串行总线,包括一根串行数据线(serial data line,SDA)和一根串行时钟线(derail clock line,SCL)。在一些实施例中,处理器110可以包含多组I2C总线。处理器110可以通过不同的I2C总线接口分别耦合触摸传感器180K、充电器、闪光灯、摄像头193等。例如:处理器110可以通过I2C接口耦合触摸传感器180K,使处理器110与触摸传感器180K通过I2C总线接口通信,实现装置100的触摸功能。
[0064] I2S接口可以用于音频通信。在一些实施例中,处理器110可以包含多组I2S总线。处理器110可以通过I2S总线与音频模块170耦合,实现处理器110与音频模块170之间的通信。在一些实施例中,音频模块170可以通过I2S接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。
[0065] PCM接口也可以用于音频通信,将模拟信号抽样,量化和编码。在一些实施例中,音频模块170与无线通信模块160可以通过PCM接口耦合。在一些实施例中,音频模块170也可以通过PCM接口向无线通信模块160传递音频信号,实现通过蓝牙耳机接听电话的功能。所述I2S接口和所述PCM接口都可以用于音频通信。
[0066] UART接口是一种通用串行数据总线,用于异步通信。该总线可以为双向通信总线。它将要传输的数据在串行通信与并行通信之间转换。在一些实施例中,UART接口通常被用于连接处理器110与无线通信模块160。例如:处理器110通过UART接口与无线通信模块160中的蓝牙模块通信,实现蓝牙功能。在一些实施例中,音频模块170可以通过UART接口向无线通信模块160传递音频信号,实现通过蓝牙耳机播放音乐的功能。
[0067] MIPI接口可以被用于连接处理器110与显示屏194和摄像头193等外围器件。MIPI接口包括摄像头串行接口(camera serial interface,CSI)、显示屏串行接口(display serial interface,DSI)等。在一些实施例中,处理器110和摄像头193通过CSI接口通信,实现装置100的拍摄功能。处理器110和显示屏194通过DSI接口通信,实现装置100的显示功能。
[0068] GPIO接口可以通过软件配置。GPIO接口可以被配置为控制信号接口,也可被配置为数据信号接口。在一些实施例中,GPIO接口可以用于连接处理器110与摄像头193,显示屏194、无线通信模块160、音频模块170和传感器180。GPIO接口还可以被配置为I2C接口、I2S接口、UART接口或MIPI接口。
[0069] USB接口130是符合USB标准规范的接口,例如可以是迷你(Mini)USB接口、微型(Micro)USB接口或C型USB(USB Type C)接口。USB接口130可以用于连接充电器为装置100充电,也可以用于装置100与外围设备之间传输数据,还可以用于连接耳机以通过耳机播放音频。USB接口130还可以用于连接其他装置100,例如AR设备。
[0070] 图1所示的各模块间的连接关系只是示意性说明,并不构成对装置100的各模块间的连接关系的限定。可选地,装置100的各模块也可以采用上述实施例中多种连接方式的组合。
[0071] 充电管理模块140用于从充电器接收电力。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的电流。在一些无线充电的实施例中,充电管理模块140可以通过装置100的无线充电线圈接收电磁波(电流路径如虚线所示)。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为装置100供电。
[0072] 电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。电源管理模块141还可以用于监测电池容量、电池循环次数和电池健康状态(例如,漏电、阻抗)等参数。可选地,电源管理模块141可以设置于处理器110中,或者,电源管理模块141和充电管理模块140可以设置于同一个器件中。
[0073] 装置100的无线通信功能可以通过天线1、天线2、移动通信模块150、无线通信模块160、调制解调处理器以及基带处理器等器件实现。
[0074] 天线1和天线2用于发射和接收电磁波信号。装置100中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。在另外一些实施例中,天线可以和调谐开关结合使用。
[0075] 移动通信模块150可以提供应用在装置100上的无线通信的解决方案,例如下列方th th案中的至少一个:第二代(2   generation,2G)移动通信解决方案、第三代(3  th
generation,3G)移动通信解决方案、第四代(4  generation,5G)移动通信解决方案、第五th
代(5  generation,5G)移动通信解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。移动通信模块150可以由天线1接收电磁波,并对接收的电磁波进行滤波和放大等处理,随后传送至调制解调处理器进行解调。移动通信模块150还可以放大经调制解调处理器调制后的信号,放大后的该信号经天线1转变为电磁波辐射出去。在一些实施例中,移动通信模块150的至少部分功能模块可以被设置于处理器110中。在一些实施例中,移动通信模块150的至少部分功能模块可以与处理器110的至少部分模块被设置在同一个器件中。
[0076] 调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(例如,扬声器170A、受话器170B)输出声音信号,或通过显示屏194显示图像或视频。在一些实施例中,调制解调处理器可以是独立的器件。在另一些实施例中,调制解调处理器可以独立于处理器110,与移动通信模块150或其他功能模块设置在同一个器件中。
[0077] 与移动通信模块150类似,无线通信模块160也可以提供应用在装置100上的无线通信解决方案,例如下列方案中的至少一个:无线局域网(wireless local  area networks,WLAN)、蓝牙(bluetooth,BT)、蓝牙低功耗(bluetooth low energy,BLE)、超宽带(ultra wide band,UWB)、全球导航卫星系统(global navigation satellite system,GNSS)、调频(frequency modulation,FM)、近场通信(near field communication,NFC)、红外(infrared,IR)技术。无线通信模块160可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,并将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频和放大,该信号经天线2转变为电磁波辐射出去。
[0078] 在一些实施例中,装置100的天线1和移动通信模块150耦合,装置100的天线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),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)。
[0079] 装置100可以通过GPU、显示屏194以及应用处理器实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
[0080] 显示屏194可以用于显示图像或视频。显示屏194包括显示面板。显示面板可以采用液晶显示屏(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个显示屏194,N为大于1的正整数。
[0081] 装置100可以通过ISP、摄像头193、视频编解码器、GPU、显示屏194以及应用处理器等实现拍摄功能。
[0082] ISP用于处理摄像头193反馈的数据。例如,拍照时,打开快门,光线通过镜头被传递到摄像头感光元件上,光信号转换为电信号,摄像头感光元件将所述电信号传递给ISP处理,转化为肉眼可见的图像。ISP可以对图像的噪点、亮度和色彩进行算法优化,ISP还可以优化拍摄场景的曝光和色温等参数。在一些实施例中,ISP可以设置在摄像头193中。
[0083] 摄像头193用于捕获静态图像或视频。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal‑oxide‑semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给ISP转换成数字图像信号。ISP将数字图像信号输出到DSP加工处理。DSP将数字图像信号转换成标准的红绿蓝(red green blue,RGB),YUV等格式的图像信号。在一些实施例中,装置100可以包括1个或N个摄像头193,N为大于1的正整数。
[0084] 数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。例如,当装置100在频点选择时,数字信号处理器用于对频点能量进行傅里叶变换等。
[0085] 视频编解码器用于对数字视频压缩或解压缩。装置100可以支持一种或多种视频编解码器。这样,装置100可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving picture experts group,MPEG)1、MPEG2、MPEG3和MPEG4。
[0086] NPU是一种借鉴生物神经网络结构的处理器,例如借鉴人脑神经元之间传递模式对输入信息快速处理,还可以不断地自学习。通过NPU可以实现装置100的智能认知等功能,例如:图像识别、人脸识别、语音识别和文本理解。
[0087] 外部存储器接口120可以用于连接外部存储卡,例如安全数码(secure digital,SD)卡,实现扩展装置100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
[0088] 内部存储器121可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能(例如,声音播放功能和图像播放功能)所需的应用程序。存储数据区可存储装置100使用过程中所创建的数据(例如,音频数据和电话本)。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如:至少一个磁盘存储器件、闪存器件和通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令和/或存储在设置于处理器中的存储器的指令,执行装置100的各种处理方法。
[0089] 装置100可以通过音频模块170、扬声器170A、受话器170B、麦克风170C、耳机接口170D以及应用处理器等实现音频功能,例如,音乐播放和录音。
[0090] 音频模块170用于将数字音频信息转换成模拟音频信号输出,也可以用于将模拟音频输入转换为数字音频信号。音频模块170还可以用于对音频信号编码和解码。在一些实施例中,音频模块170或者音频模块170的部分功能模块可以设置于处理器110中。
[0091] 扬声器170A,也称为喇叭,用于将音频电信号转换为声音信号。装置100可以通过扬声器170A收听音乐或免提通话。
[0092] 受话器170B,也称为听筒,用于将音频电信号转换成声音信号。当用户使用装置100接听电话或语音信息时,可以通过将受话器170B靠近耳朵接听语音。
[0093] 麦克风170C,也称为话筒或传声器,用于将声音信号转换为电信号。当用户拨打电话或发送语音信息时,可以通过靠近麦克风170C发声将声音信号输入麦克风170C。装置100可以设置至少一个麦克风170C。在另一些实施例中,装置100可以设置两个麦克风170C,以实现降噪功能。在另一些实施例中,装置100还可以设置三个、四个或更多麦克风170C,以实现识别声音来源和定向录音等功能。处理器110可以对麦克风170C输出的电信号进行处理,例如,音频模块170与无线通信模块160可以通过PCM接口耦合,麦克风170C将环境声音转换为电信号(如PCM信号)后,通过PCM接口将该电信号传输至处理器110;从处理器110对该电信号进行音量分析和频率分析,确定环境声音的音量和频率。
[0094] 耳机接口170D用于连接有线耳机。耳机接口170D可以是USB接口130,也可以是3.5mm的开放移动装置100平台(open mobile terminal platform,OMTP)标准接口,美国蜂窝电信工业协会(cellular telecommunications industry association of the USA,CTIA)标准接口。
[0095] 压力传感器180A用于感受压力信号,可以将压力信号转换成电信号。在一些实施例中,压力传感器180A可以设置于显示屏194。压力传感器180A的种类很多,例如可以是电阻式压力传感器、电感式压力传感器或电容式压力传感器。电容式压力传感器可以是包括至少两个具有导电材料的平行板,当力作用于压力传感器180A,电极之间的电容改变,装置100根据电容的变化确定压力的强度。当触摸操作作用于显示屏194时,装置100根据压力传感器180A检测所述触摸操作。装置100也可以根据压力传感器180A的检测信号计算触摸的位置。在一些实施例中,作用于相同触摸位置,但不同触摸操作强度的触摸操作,可以对应不同的操作指令。例如:当触摸操作强度小于第一压力阈值的触摸操作作用于短消息应用图标时,执行查看短消息的指令;当触摸操作强度大于或等于第一压力阈值的触摸操作作用于短消息应用图标时,执行新建短消息的指令。
[0096] 陀螺仪传感器180B可以用于确定装置100的运动姿态。在一些实施例中,可以通过陀螺仪传感器180B确定装置100围绕三个轴(即,x轴、y轴和z轴)的角速度。陀螺仪传感器180B可以用于拍摄防抖。例如,当快门被按下时,陀螺仪传感器180B检测装置100抖动的角度,根据角度计算出镜头模组需要补偿的距离,让镜头通过反向运动抵消装置100的抖动,实现防抖。陀螺仪传感器180B还可以用于导航和体感游戏等场景。
[0097] 气压传感器180C用于测量气压。在一些实施例中,装置100通过气压传感器180C测得的气压值计算海拔高度,辅助定位和导航。
[0098] 磁传感器180D包括霍尔传感器。装置100可以利用磁传感器180D检测翻盖皮套的开合。在一些实施例中,当装置100是翻盖机时,装置100可以根据磁传感器180D检测翻盖的开合。装置100可以根据检测到的皮套的开合状态或翻盖的开合状态,设置翻盖自动解锁等特性。
[0099] 加速度传感器180E可检测装置100在各个方向上(一般为x轴、y轴和z轴)加速度的大小。当装置100静止时可检测出重力的大小及方向。加速度传感器180E还可以用于识别装置100的姿态,作为横竖屏切换和计步器等应用程序的输入参数。
[0100] 距离传感器180F用于测量距离。装置100可以通过红外或激光测量距离。在一些实施例中,例如在拍摄场景中,装置100可以利用距离传感器180F测距以实现快速对焦。
[0101] 接近光传感器180G可以包括例如发光二极管(light‑emitting diode,LED)和光检测器,例如,光电二极管。LED可以是红外LED。装置100通过LED向外发射红外光。装置100使用光电二极管检测来自附近物体的红外反射光。当检测到反射光时,装置100可以确定附近存在物体。当检测不到反射光时,装置100可以确定附近没有物体。装置100可以利用接近光传感器180G检测用户是否手持装置100贴近耳朵通话,以便自动熄灭屏幕达到省电的目的。接近光传感器180G也可用于皮套模式或口袋模式的自动解锁与自动锁屏。
[0102] 环境光传感器180L用于感知环境光亮度。装置100可以根据感知的环境光亮度自适应调节显示屏194亮度。环境光传感器180L也可用于拍照时自动调节白平衡。环境光传感器180L还可以与接近光传感器180G配合,检测装置100是否在口袋里,以防误触。
[0103] 指纹传感器180H用于采集指纹。装置100可以利用采集的指纹特性实现解锁、访问应用锁、拍照和接听来电等功能。
[0104] 温度传感器180J用于检测温度。在一些实施例中,装置100利用温度传感器180J检测的温度,执行温度处理策略。例如,当温度传感器180J上报的温度超过阈值,装置100执行降低位于温度传感器180J附近的处理器的性能,以便降低功耗实施热保护。在另一些实施例中,当温度低于另一阈值时,装置100对电池142加热,以避免低温导致装置100异常关机。在其他一些实施例中,当温度低于又一阈值时,装置100对电池142的输出电压执行升压,以避免低温导致的异常关机。
[0105] 触摸传感器180K,也称为触控器件。触摸传感器180K可以设置于显示屏194,由触摸传感器180K与显示屏194组成触摸屏,触摸屏也称为触控屏。触摸传感器180K用于检测作用于其上或其附近的触摸操作。触摸传感器180K可以将检测到的触摸操作传递给应用处理器,以确定触摸事件类型。可以通过显示屏194提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器180K也可以设置于装置100的表面,并且与显示屏194设置于不同的位置。
[0106] 骨传导传感器180M可以获取振动信号。在一些实施例中,骨传导传感器180M可以获取人体声部振动骨块的振动信号。骨传导传感器180M也可以接触人体脉搏,接收血压跳动信号。在一些实施例中,骨传导传感器180M也可以设置于耳机中,结合成骨传导耳机。音频模块170可以基于所述骨传导传感器180M获取的声部振动骨块的振动信号,解析出语音信号,实现语音功能。应用处理器可以基于所述骨传导传感器180M获取的血压跳动信号解析心率信息,实现心率检测功能。
[0107] 按键190包括开机键和音量键。按键190可以是机械按键,也可以是触摸式按键。装置100可以接收按键输入信号,实现于案件输入信号相关的功能。
[0108] 马达191可以产生振动。马达191可以用于来电提示,也可以用于触摸反馈。马达191可以对作用于不同应用程序的触摸操作产生不同的振动反馈效果。对于作用于显示屏
194的不同区域的触摸操作,马达191也可产生不同的振动反馈效果。不同的应用场景(例如,时间提醒、接收信息、闹钟和游戏)可以对应不同的振动反馈效果。触摸振动反馈效果还可以支持自定义。
[0109] 指示器192可以是指示灯,可以用于指示充电状态和电量变化,也可以用于指示消息、未接来电和通知。
[0110] SIM卡接口195用于连接SIM卡。SIM卡可以插入SIM卡接口195实现与装置100的接触,也可以从SIM卡接口195拔出实现与装置100的分离。装置100可以支持1个或N个SIM卡接口,N为大于1的正整数。同一个SIM卡接口195可以同时插入多张卡,所述多张卡的类型可以相同,也可以不同。SIM卡接口195也可以兼容外部存储卡。装置100通过SIM卡和网络交互,实现通话以及数据通信等功能。在一些实施例中,装置100采用嵌入式SIM(embedded‑SIM,eSIM)卡,eSIM卡可以嵌在装置100中,不能和装置100分离。
[0111] 上文详细描述了装置100的硬件系统,下面介绍装置100的软件系统。软件系统可以采用分层架构、事件驱动架构、微核架构、微服务架构或云架构,本申请实施例以分层架构为例,示例性地描述装置100的软件系统。
[0112] 如图2所示,采用分层架构的软件系统分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,软件系统可以分为四层,从上至下分别为应用程序层、应用程序框架层、系统库、安卓运行时以及内核层。
[0113] 应用层可以包括一系列应用程序包。如图2所示,应用程序包可以包括电话、邮箱、日历、系统控件等应用程序,其中,系统控件是用于实现特定交互功能的模块,例如,系统控件可以包括具有文本显示功能的控件TextView,具有图片显示功能的控件ImageView,以及按钮控件Button。
[0114] 应用程序框架层为应用层的应用程序提供应用编程接口(application programming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
[0115] 如图2所示,应用程序框架层可以包括活动管理器、图像合成系统和视图系统等。
[0116] 活动管理器用于管理各个应用程序的生命周期以及导航回退功能。负责的主线程创建,各个应用程序的生命周期的维护。
[0117] 图像合成系统用于控制图像合成,以及产生垂直同步(vetical synchronization,Vsync)信号。
[0118] 图像合成系统包括:合成线程(例如,surfaceflinger)、Vsync线程、缓存队列(quene buffer)线程。合成线程用于被Vsync信号唤醒进行合成。Vsync线程用于根据Vsync信号请求生成下一个Vsync信号。缓存队列线程用于存放缓存、产生Vsync信号请求,以及唤醒合成线程等。视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。
[0119] 视图系统可用于构建应用程序的显示界面。显示界面可以由一个或多个视图组成的。例如,显示界面可以包括短信通知图标的视图,也可以包括显示文字的视图以及显示图片的视图。
[0120] 视图系统可以包括滑动状态检测模块、状态标记模块、滑动丢帧检测模块、滑动丢帧上报模块和绘制合成模块等。
[0121] 滑动状态检测模块用于检测用户当前在触控屏上的操作是否为滑动操作。
[0122] 滑动丢帧检测模块用于检测滑动操作场景中的丢帧事件。
[0123] 滑动丢帧上报模块用于将滑动操作场景中发生的丢帧事件上报给服务器。
[0124] 绘制合成模块用于对UI变化内容进行绘制、渲染、合成等处理,生成待显示的界面。
[0125] 下文会详细介绍视图系统中各个模块的工作流程。
[0126] Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
[0127] 核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
[0128] 应用层和应用程序框架层运行在虚拟机中。虚拟机将应用层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
[0129] 系统库可以包括多个功能模块。例如:图像渲染库、图像合成库、函数库、媒体库和输入处理库等。
[0130] 图像渲染库用于二维或三维图像的渲染。图像合成库用于二维或三维图像的合成。
[0131] 可能的实现方式中,应用通过图像渲染库对图像进行绘制渲染,然后应用将绘制渲染后的图像发送至图像合成系统的缓存队列中。每当Vsync信号到来时,图像合成系统(例如,surface flinger)从缓存队列中按顺序获取待合成的一帧图像,然后通过图像合成库进行图像合成。
[0132] 函数库提供C语言中所使用的宏、类型定义、字符串操作函数、数学计算函数以及输入输出函数等。
[0133] 媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4、H.264、动态图像专家组音频层面3(moving picture experts group audio layer III,MP3)、高级音频编码(advanced audio coding,AAC)、自适应多码率(adaptive multi‑rate,AMR)、联合图像专家组(joint photographic experts group,JPG)和便携式网络图形(portable network graphics,PNG)。
[0134] 输入处理库用于处理输入设备的库,可以实现鼠标、键盘和触摸输入处理等。
[0135] 内核层是硬件和软件之间的层。内核层可以包含触控屏(touch panel,TP)驱动、显示驱动、蓝牙驱动、键盘驱动、存储器驱动和相机驱动。
[0136] 下面结合界面切换场景,示例性说明装置100的软件以及硬件的工作流程。
[0137] 当用户在触控屏上操作时,装置100的处理过程可以分为以下几个阶段,如图3所示。
[0138] TP响应阶段:
[0139] TP响应阶段是装置100识别用户操作的阶段。用户的手指接触触控屏使得触控屏的状态发生变化,触发触控屏生成触摸(touch)事件;随后,触控屏将touch事件发送至处理器110。该阶段包含生成事件(如,用户触摸面板生成touch事件)和分发事件等操作。
[0140] 系统事件分发响应阶段:
[0141] 处理器110获取touch事件后,通过内核层的TP驱动识别touch事件的类型,根据该touch事件的类型确定对应的控件。例如,touch事件的类型为滑动事件,处理器110可以确定滑动事件对应的控件为滚动条(scroller),随后处理器110通过scroller处理滑动事件,该过程即系统事件分发。该阶段包含输入事件(处理器110获取touch事件)、分发事件和响应事件等操作。
[0142] 控件响应阶段:
[0143] 处理器110通过控件对touch事件进行处理,例如,处理器110可以通过scroller确定滑动事件导致的UI变化内容,该过程即控件响应阶段。该阶段包含输入事件(控件获取触摸事件)和响应事件(如scroller基于触摸事件生成滚动数据)等操作。
[0144] 绘制显示阶段:
[0145] 确定UI变化内容后,处理器110可以通过GPU对UI变化内容进行绘制、渲染、合成等处理,生成待显示的界面,并通过触控屏显示该界面,从而完成了界面切换。该阶段包含处理事件(如绘制滚动数据对应的UI)等操作。
[0146] 下面以装置100为终端设备为例,结合图4至图10详细描述上述各个阶段。
[0147] 首先以电容屏为例介绍TP响应阶段触控屏的工作流程。
[0148] 图4示出了电容屏的工作原理。电容屏的构造主要是在玻璃屏幕上镀一层透明的薄膜导体层,再在薄膜导体层外加上一块保护玻璃,双玻璃设计能彻底保护导体层及传感器。由于人体存在电场,当手指触摸电容屏时,用户的手指和电容屏的面板形成耦合电容,面板上的高频信号输入端Tx与接收端Rx之间形成电容差,该电容差即为电容屏所检测到的电容采样值。由于电流等于电容乘以电压在时间上的微分,因此基于电容采样值,可以确定手指触摸电容屏时引起的电流变化值,即相当于用户手指触摸电容屏时吸走一个很小的电流,而这个电流分别从面板的四个角上的电极中流出。
[0149] Tx的驱动电压所产生的高频信号脉冲可以是直流脉冲信号(如图4中的脉冲波形所示),该驱动电压可以经驱动缓冲器(如图4中的三角形符号所示)接入各触控单元上其中一角的电极,该电极作为驱动电极;触控单元上与该驱动电极竖向同侧的另一角的接收电极则用于接收电荷形成电流输出,输入高频信号的一端即为上述Tx,接收电流输出的一端即为上述Rx。
[0150] 如图5所示,当手指触摸电容屏时,流经上述四角上4个电极的电流与用户手指到四个角的距离成正比,因此,电容屏上的集成芯片(integrated circuit,IC)通过对四个电流比例的精密计算便可确定用户手指或触控笔的触摸位置。
[0151] 当触控屏中触摸传感器180K接收到触摸操作时,内核层(TP驱动)将触摸操作加工成原始输入事件(包括触摸坐标、触摸力度、触摸操作的时间戳等信息)。原始输入事件被存储在内核层。内核层通过输入处理库将原始输入事件上报至应用程序框架层的输入系统(图2未体现该模块)。应用程序框架层的输入系统解析该原始输入事件的信息(包括:操作类型、时间戳和报点位置等)和根据当前焦点确定焦点应用,并将解析后的信息发送至焦点应用。焦点可以是触摸操作中的触碰点或者鼠标点击操作中的点击位置。焦点应用为终端设备前台运行的应用或者触摸操作中触碰位置对应的应用。焦点应用根据解析后的原始输入事件的信息(例如,报点位置)确定该原始输入事件所对应的控件。
[0152] 以该触摸操作是滑动操作,并且该滑动操作所对应的控件为应用程序(application,APP)的列表控件为例,APP通过应用程序框架层的视图系统,调用系统库中图像渲染库对图像进行绘制渲染。APP将绘制渲染后的图像发送至图像合成系统的缓存队列中。通过系统库中图像合成库将图像合成系统中绘制渲染后的图像合成为UI。图像合成系统通过内核层的显示驱动,使得屏幕(即,显示屏194)显示UI。
[0153] 图6为本申请实施例提供的几种滑动操作的示意图。
[0154] 终端设备显示相册界面,用户可以在相册界面进行单向滑动(如图6中的a部分所示)、拖动滑动(如图6中的b部分所示)、多向滑动(如图6中的c部分所示)、双指滑动(如图6中的d部分所示)等操作。当终端设备接收到用户的滑动操作时,终端设备基于滑动操作进行帧绘制、渲染、合成等处理,将滑动操作导致的UI变化内容显示在屏幕上。本申请对滑动操作的具体形式不做限定。
[0155] 在进一步介绍显示过程之前,为了便于理解,示例性地给出部分与本申请实施例相关概念的说明以供参考。
[0156] 1、帧:是指界面显示中最小单位的单幅画面。一帧可以理解为一副静止的画面,快速连续地显示多个相连的帧可以形成物体运动的假象。帧率是指在单位时间(如1秒钟)内刷新图片的帧数,也可以理解为图形处理器每秒钟刷新画面的次数。高的帧率可以得到更流畅和更逼真的动画。每秒钟帧数越多,所显示的动作就会越流畅。
[0157] 需要说明的是,界面显示帧前通常需要经过绘制、渲染、合成等过程。
[0158] 2、帧绘制:是指显示界面的图片绘制。显示界面可以由一个或多个视图组成,各个视图可以由视图系统的可视控件绘制,各个视图由子视图组成,一个子视图对应视图中的一个小部件,例如,其中的一个子视图对应图片视图中的一个符号。
[0159] 3、帧渲染:是将绘制后的视图进行着色操作或增加3D效果等。例如:3D效果可以是灯光效果、阴影效果和纹理效果等。
[0160] 4、帧合成:是将多个上述一个或多个渲染后的视图合成为显示界面的过程。
[0161] 5、垂直同步(vetical synchronization,Vsync)信号:用于控制帧的绘制渲染、合成、显示等进程的起始。Vsync信号为周期性信号,Vsync信号周期可以根据屏幕刷新率进行设置,例如,屏幕刷新率为60Hz时,Vsync信号周期可以为16.6ms,即终端设备每间隔16.6ms生成一个控制信号使Vsync信号周期触发。为了保证显示的流畅性,避免出现显示卡顿等现象,终端设备一般基于Vsync信号进行显示,以对图像的绘制、渲染、合成和屏幕刷新显示等流程进行同步。
[0162] Vsync信号包括软件Vsync(Vsync‑APP或Vsync‑SF)和硬件Vsync(Vsync‑HW)。Vsync‑APP可以用于触发绘制渲染流程。Vsync‑SF可以用于触发合成流程。硬件Vsync信号(Vsync‑HW)可以用于触发屏幕显示刷新流程。通常情况下,软件Vsync和硬件Vsync保持周期同步。以60Hz和120Hz变化为例,若Vsync‑HW从60Hz切换到120Hz,Vsync‑APP、Vsync‑SF同步变化,从60Hz切换到120Hz。
[0163] 下面结合图7和图8对终端设备收到滑动操作时的界面显示过程进行说明。
[0164] 图7为一种界面显示流程示意图。图7中帧1、帧2和帧3显示的内容与不同的界面相对应。例如,当终端设备接收到用户在应用界面内向上滑动的操作时,终端设备显示的内容依次对应于帧1、帧2和帧3。
[0165] 终端设备中的应用通过应用程序框架层的视图系统,依次对帧1、帧2和帧3进行绘制渲染。帧1绘制渲染完成后,终端设备的应用将绘制渲染好的帧1发送至图像合成系统(例如,surface flinger)。图像合成系统对绘制渲染好的帧1进行合成。帧1完成合成后,终端设备可以通过调用内核层启动显示驱动,在屏幕上显示帧1对应的内容。帧‑1和帧0是时序位于帧1之前的帧,在显示帧1之前,终端设备已经完成了帧‑1和帧0的合成,因此,终端设备在绘制渲染帧1的Vsync信号周期内显示帧‑1,在合成帧1的Vsync信号周期内显示帧0。帧2和帧3类似于帧1的过程也进行合成和显示,此处不再赘述。
[0166] 图8为图7所示的界面显示流程对应的显示结果的示意图。图8中的数字表示坐标值,终端设备显示的初始界面为帧0。
[0167] 当用户手指按压屏幕时,终端设备确定输入事件为按压(down)事件,终端设备显示的界面不变,继续显示初始界面,即,帧1与帧0相同。
[0168] 当用户手指向上滑动时,终端设备确定输入事件为移动(move)事件。终端设备根据move事件对应的触控坐标确定画面布局进行绘制渲染,终端设备显示的界面从帧1变为帧2。
[0169] 当用户手指离开屏幕时,终端设备确定输入事件为抬起(up)事件。终端设备根据up事件对应的触控坐标确定画面布局进行绘制渲染,终端设备的界面从帧2变为帧3。
[0170] 图7和图8所示的显示过程中,帧1、帧2和帧3的绘制渲染分别在1个Vsync信号周期内完成,而在终端设备的实际应用中,可能会由于终端设备的系统负载大(如GPU占用)或网络差等多种原因,导致终端设备绘制渲染帧的时间增加,甚至导致绘制渲染超时。终端设备可能在合成时无帧可取,导致显示出现卡顿。
[0171] 示例性的,图9为另一种界面显示流程示意图。图9中帧1、帧2和帧3显示的内容与不同的界面相对应。当终端设备接收到用户向上滑动的操作时,终端设备显示的内容依次对应于帧1、帧2和帧3,终端设备对图9中的帧1、帧2和帧3分别进行绘制渲染、合成和显示,具体可以参照图7对应的描述。
[0172] 与图7不同的是,图9中的帧1由于各种原因(如move事件响应超时)导致绘制渲染超时,当图9所示的第二个Vsync信号(Vsync2)到来时,帧1的绘制渲染未完成,导致终端设备无法对帧2进行绘制渲染,进而导致帧2的合成未执行。通常情况下,当一个帧的绘制渲染时机或者合成时机到来时,由于一些原因导致未执行该帧的绘制渲染或者合成,则不再对该帧进行绘制渲染合成,图9中,帧2错过了绘制渲染时机(Vsync2来临的时刻),则终端设备不再对帧2进行绘制渲染,也不再对帧2进行合成(如图9中的虚线框所示)。因此,屏幕显示帧1后不再延迟显示帧2,而是待帧3合成后获取并显示帧3。
[0173] 图10为图9所示的界面显示流程对应的显示结果的示意图。图10中的数字表示坐标值,终端设备显示的初始界面为帧0。
[0174] 当用户手指按压屏幕时,终端设备确定输入事件为down事件,终端设备显示的界面不变,继续显示初始界面,即,帧1与帧0相同。
[0175] 当用户手指向上滑动时,终端设备确定输入事件为move事件。终端设备根据move事件对应的触控坐标确定画面布局进行绘制渲染,由于绘制渲染超时,终端设备显示的界面仍然是帧1。
[0176] 当用户手指离开屏幕时,终端设备确定输入事件为up事件。终端设备根据up事件对应的触控坐标确定画面布局进行绘制渲染,终端设备的界面从帧1变为帧3。
[0177] 由此可见,图9所示的界面显示流程导致了丢帧现象,从而导致显示界面出现卡顿,降低了用户体验。
[0178] 丢帧现象的原因较为复杂,可能是内存不足导致绘制渲染失败,也可能是未正确识别用户操作,还可能是其他原因。因此,技术人员需要确定丢帧现象对应的用户操作,以便于针对性地进行分析。下面介绍本申请提供的丢帧检测的方法。
[0179] 图11是从模块交互的角度描述本申请提供的丢帧检测方法。
[0180] 首先介绍touch事件的生成和分发过程。
[0181] 在硬件方面,终端设备通过TP111与用户进行交互。用户的手指接触TP111后,触发TP111生成包含电容值的touch事件;包含电容值的touch事件被传递至处理器110,处理器110通过TP驱动将包含电容值的touch事件加工成包含事件类型的touch事件。
[0182] 例如,处理器110根据包含电容值的touch事件确定touch事件的相关细节(如手指接触TP111的位置和时间),并将touch事件的相关细节封装成MotionEvent对象。
[0183] 不同的事件类型可以被封装为不同的MotionEvent对象。down事件可以被封装为MotionEvent.ACTION_DOWN,up事件可以被封装为MotionEvent.ACTION_UP,move事件可以被封装为MotionEvent.ACTION_MOVE,取消(cancel)事件可以被封装为MotionEvent.ACTION_CANCEL;其中,MotionEvent.ACTION_DOWN、MotionEvent.ACTION_UP、MotionEvent.ACTION_MOVE和MotionEvent.ACTION_CANCEL均可被称为包含事件类型的touch事件。
[0184] 图12示出了多种touch事件的产生过程。
[0185] 当用户将手指按压在TP111的控件区域内时,处理器110确定TP111生成的touch事件为down事件;当用户将手指在控件区域内滑动时,处理器110确定TP111生成的touch事件为move事件;当用户将手指在TP111的控件区域内抬起时,处理器110确定TP111生成的touch事件为up事件;当用户将手指移出TP的控件区域内时,处理器110确定TP生成的touch事件的事件类型为cancel事件。
[0186] 如果没有特别说明,下文中的touch事件均指包含事件类型的touch事件。
[0187] 继续参考图11所示,touch事件生成后经过事件分发处理被传递至视图系统。
[0188] 视图系统通过滑动状态检测模块检测touch事件的事件类型,确定用户当前的操作是否为滑动操作。
[0189] 例如,若当前touch事件为move事件,则滑动状态检测模块确定用户当前的操作为滑动操作;若当前touch事件为up事件或cancel事件,滑动状态检测模块确定用户当前的操作为非滑动操作。
[0190] 随后,滑动状态检测模块将touch事件和滑动操作检测结果传递至状态标记模块,状态标记模块根据滑动操作检测结果更新状态标签(即,滑动操作标签)。该状态标签可以位于View上下文中,若滑动操作检测结果指示用户当前的操作为滑动操作,状态标记模块可以将状态标签更新为True;若滑动操作检测结果指示用户当前的操作为非滑动操作,状态标记模块可以将状态标签更新为False。
[0191] 状态标记模块将touch事件传递至APP,APP确定该touch事件对应的控件,并将该touch事件传递至该控件。
[0192] 控件响应该touch事件,确定UI的视图布局变化内容,并将视图布局变化内容传递至绘制合成模块,由绘制合成模块进行绘制渲染合成等处理,生成帧图像。
[0193] 绘制合成模块基于视图布局变化内容合成帧后,将帧处理时长(从获取视图布局变化内容到生成帧的时长)传递至滑动丢帧检测模块。滑动丢帧检测模块根据状态标签和帧处理时长判断滑动丢帧是否发生,其中,滑动丢帧检测模块可以通过View上下文获状态标签。当处理时长大于第一阈值(如48ms)时,滑动丢帧检测模块将滑动丢帧判断结果(滑动丢帧事件发生)传递至滑动丢帧上报模块。
[0194] 滑动丢帧上报模块根据滑动丢帧判断结果生成滑动丢帧事件,并将滑动丢帧事件传递至检测驱动模块。检测驱动模块将滑动丢帧事件传递至检测服务模块,检测服务模块可以根据滑动丢帧事件收集终端设备的当前状态信息(如内存使用量、处理器负载等信息),并将当前状态信息打包发送至服务器,以便于工程师根据当前状态信息分析滑动丢帧的原因,解决滑动丢帧问题。示例性地,检测服务模块可以将滑动丢帧事件发送至服务器,工程师可以基于滑动丢帧事件的发生时刻人工收集该时刻的状态信息。
[0195] 可选地,当终端设备处于测试(beta)模式时,检测服务模块可以在终端设备本地显示当前状态信息,本申请对工程师从终端设备获取当前状态信息的具体方式不做限定。
[0196] 上述丢帧检测的具体流程如图13所示。
[0197] S1301,处理器获取并分发touch事件。
[0198] 处理器获取并分发touch事件的过程前文已详细描述,此处不再赘述。
[0199] S1302,滑动状态检测模块确定该touch事件是否为move事件。
[0200] 滑动状态检测模块可以根据touch事件携带的事件类型信息判断该touch事件是否为move事件。本申请对滑动状态检测模块确定当前touch事件是否为move事件的具体方法不做限定。
[0201] S1303,若该touch事件是move事件,则滑动状态标记模块可以将View上下文中的滑动操作标签(tag)设置为True。
[0202] S1304,若该touch事件不是move事件,则滑动状态检测模块可以继续判断该touch事件是否为up事件或cancel事件。
[0203] 滑动操作中可能发生的事件包括move事件和down事件,若该touch事件不是move事件,不能说明当前用户操作为非滑动操作,滑动状态标记模块还需要确定该touch事件是否为up事件或cancel事件。
[0204] S1305,若该touch事件是up事件或cancel事件,则滑动状态标记模块可以将View上下文中的滑动操作标签设置为False。
[0205] S1306,控件响应touch事件。
[0206] 例如,如图8所示,控件可以根据move事件的坐标信息确定视图布局变化。
[0207] S1307,绘制合成模块根据视图布局变化生成单帧。
[0208] S1308,滑动丢帧检测模块根据滑动操作标签确定是否进行滑动丢帧检测。
[0209] 若滑动操作标签指示当前用户操作不是滑动操作,则通用丢帧检测模块(图2未体现该模块)可以执行S1309。其中,通用丢帧检测模块是用于检测非滑动操作场景中是否发生丢帧的模块。
[0210] 若滑动操作标签指示当前用户操作是滑动操作,则滑动丢帧检测模块可以执行下列步骤。
[0211] S1310,滑动丢帧检测模块确定单帧的处理时长是否大于第一阈值。
[0212] 若单帧的处理时长是否大于第一阈值,可能导致Vsync信号到来时当前touch事件对应的帧不能完成绘制,从而导致丢帧。因此,当单帧的处理时长大于第一阈值(如48ms)时,滑动丢帧上报模块可以上报执行S1311。
[0213] 当丢帧数量小于或等于48ms时,说明当前的滑动丢帧事件是偶然事件,用户几乎不会感知到丢帧,滑动丢帧检测模块可以不上报滑动丢帧事件,从而可以减小丢帧检测的功耗;当丢帧数量大于48ms时,说明当前的滑动丢帧事件是频发事件,用户能够感知到丢帧,滑动丢帧检测模块可以上报滑动丢帧事件,以便于工程师分析滑动丢帧的原因,解决滑动丢帧问题。
[0214] S1311,滑动丢帧上报模块上报滑动丢帧事件。
[0215] 滑动丢帧上报模块可以通过检测驱动模块向检测服务模块(如HiView)上报滑动丢帧事件;检测服务模块根据滑动丢帧事件收集终端设备当前的负载状态信息,供工程师分析滑动丢帧的原因。
[0216] 下面结合图14从模块执行顺序的角度描述本申请提供的丢帧检测方法。
[0217] S1401,TP驱动获取并分发touch事件。
[0218] TP驱动获取包含电容值的touch事件,并将包含电容值的touch事件处理成包含事件类型的touch事件,随后,将包含事件类型的touch事件发送至滑动状态检测模块,具体过程前文已详细描述,此处不再赘述。
[0219] S1402,滑动状态检测模块根据touch事件生成滑动操作检测结果。
[0220] 滑动状态检测模块可以根据touch事件携带的事件类型信息判断该touch事件是否为move事件,并生成滑动操作检测结果,该滑动操作检测结果用于指示当前touch事件对应的操作是否为滑动操作。本申请对滑动状态检测模块确定当前touch事件对应的操作是否为滑动操作的具体方法不做限定。
[0221] S1403,滑动状态检测模块将touch事件和滑动操作检测结果发送至状态标记模块。
[0222] S1404,状态标记模块根据滑动操作检测结果更新状态标签。
[0223] 若滑动操作检测结果指示当前touch事件对应的操作是滑动操作,则滑动状态标记模块可以将View上下文中的滑动操作标签(tag)设置为True;若滑动操作检测结果指示当前touch事件对应的操作是非滑动操作,则滑动状态标记模块可以将View上下文中的滑动操作标签(tag)设置为False。具体过程前文已详细描述,此处不再赘述。
[0224] S1405,状态标记模块将touch事件发送至APP。
[0225] S1406,APP将touch事件发送至控件。
[0226] 本申请对touch事件从状态标记模块传递至APP再传递至控件的具体方式不做限定。
[0227] S1407,控件响应touch事件,生成视图布局变化内容。
[0228] 例如,如图8所示,控件可以根据move事件的坐标信息确定视图布局变化。
[0229] S1408,控件将视图布局变化内容发送至绘制合成模块。
[0230] S1409,绘制合成模块根据视图布局变化内容合成帧。
[0231] 绘制合成模块可以对视图布局变化内容进行绘制、渲染和合成等操作,最终生成单帧,本申请对绘制合成模块生成单帧的具体方式不做限定。
[0232] S1410,绘制合成模块将帧处理时长发送至滑动丢帧检测模块。
[0233] 帧处理时长可以是绘制合成模块从获取视图布局变化内容到生成帧的时长,还可以是其他能够体现帧处理时间的长短的时段,本申请对帧处理时长的具体定义不做限定。
[0234] S1411,滑动丢帧检测模块根据帧处理时长和状态标签判断滑动丢帧是否发生。
[0235] 滑动丢帧检测模块可以通过View上下文获状态标签。当处理时长大于第一阈值(如48ms)时,滑动丢帧检测模块执行S1412。
[0236] S1412,滑动丢帧检测模块将滑动丢帧判断结果(指示滑动丢帧事件发生的信息)发送至滑动丢帧上报模块。
[0237] S1413,滑动丢帧上报模块根据滑动丢帧判断结果生成滑动丢帧事件。
[0238] S1414,滑动丢帧上报模块将滑动丢帧事件发送至检测服务模块。
[0239] 滑动丢帧上报模块可以通过检测驱动模块将滑动丢帧事件发送至检测服务模块。
[0240] S1415,检测服务模块根据滑动丢帧事件收集并上报负载信息。
[0241] 检测驱动服务根据滑动丢帧事件收集终端设备的当前状态信息(如内存使用量、处理器负载等信息),并将当前状态信息打包发送至服务器,以便于工程师根据当前状态信息分析滑动丢帧的原因,解决滑动丢帧问题。
[0242] 本申请还提供了一种计算机程序产品,该计算机程序产品被处理器执行时实现本申请中任一方法实施例所述的方法。
[0243] 该计算机程序产品可以存储在存储器中,经过预处理、编译、汇编和链接等处理过程最终被转换为能够被处理器执行的可执行目标文件。
[0244] 该计算机程序产品也可以固化在芯片中的代码。本申请对计算机程序产品的具体形式不做限定。
[0245] 本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机执行时实现本申请中任一方法实施例所述的方法。该计算机程序可以是高级语言程序,也可以是可执行目标程序。
[0246] 该计算机可读存储介质可以是易失性存储器或非易失性存储器,或者,可以同时包括易失性存储器和非易失性存储器。其中,非易失性存储器可以是只读存储器(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)。
[0247] 本领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和设备的具体工作过程以及产生的技术效果,可以参考前述方法实施例中对应的过程和技术效果,在此不再赘述。
[0248] 在本申请所提供的几个实施例中,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的方法实施例的一些特征可以忽略,或不执行。以上所描述的装置实施例仅仅是示意性的,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,多个单元或组件可以结合或者可以集成到另一个系统。另外,各单元之间的耦合或各个组件之间的耦合可以是直接耦合,也可以是间接耦合,上述耦合包括电的、机械的或其它形式的连接。
[0249] 应理解,在本申请的各种实施例中,各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请的实施例的实施过程构成任何限定。
[0250] 另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0251] 总之,以上所述仅为本申请技术方案的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。