对涉及分析硬件传感器输出的攻击进行阻止的方法与流程

文档序号:19042254发布日期:2019-11-05 23:15阅读:153来源:国知局
对涉及分析硬件传感器输出的攻击进行阻止的方法与流程



背景技术:

便携式电子设备可以包括一个或多个硬件传感器,各个硬件传感器可操作为产生硬件传感器输出,该硬件传感器输出指示了设备在其环境内的定向,或者指示了设备在其环境内的运动,或者指示了设备在其环境内的定向和运动。通常,没有限制对来自这些硬件传感器的输出进行访问。



技术实现要素:

硬件传感器和硬件用户输入组件被集成在便携式电子设备中。硬件传感器可操作为产生指示了设备在其环境内的定向或运动或这二者的硬件传感器输出。硬件用户输入组件具有可操作为通过触摸来接受用户输入的多个单元。用户输入驱动程序和设备的操作系统可联合操作为检测涉及所述单元的触摸事件。存储在设备的存储器中的软件应用可由设备的处理器作为进程执行。传感器驱动程序或操作系统或这二者被配置为控制由进程可接收什么硬件传感器输出(如果有)。控制由进程可接收什么硬件传感器输出(如果有)可以对基于分析硬件传感器输出的攻击进行阻止,该攻击被设计为推导出经由硬件用户输入组件的多个单元已经进行了什么用户输入。

附图说明

在附图的图中,作为示例而不是限制来说明了实施例,其中,相似的附图标记指示对应的、可比较的或者类似的元素,以及其中:

图1是示例便携式电子设备和集成在设备中的具有多个按键的示例物理触觉键盘的说明图;

图2是示例便携式电子设备和集成在设备中的示例触摸屏的说明图;

图3是示例便携式电子设备、集成在设备中的具有多个按键的示例物理触觉键盘、以及集成在设备中的示例触摸屏的说明图;

图4-1、4-2、4-3、4-4、4-5和4-6沿着时间线示出了示例便携式电子设备的示例屏幕截图的定时、示例已检测到触摸事件及其相应的触摸事件窗口的定时、以及实际硬件传感器输出的示例采样的定时;

图5示出了由便携式电子设备中的陀螺仪产生的示例的实际陀螺仪数据以及示例的伪陀螺仪数据;

图6示出了由便携式电子设备中的陀螺仪产生的示例的实际陀螺仪数据以及示例的伪陀螺仪数据;

图7-1示出了由便携式电子设备中的加速度计产生的示例的实际加速度计数据,以及图7-2示出了示例加速度计数据,其部分是示例的实际加速度计数据,以及其部分是示例的伪加速度计数据;

图8是示例便携式电子设备的简化功能框图;

图9是示例便携式电子设备以及三坐标系统的说明图;

附录A提供了在进程可接收任何硬件传感器输出的情况下传感器驱动程序可以使用同步通信来怎样控制什么的伪代码示例;以及

附录B提供了在进程可接收任何硬件传感器输出的情况下传感器驱动程序可以使用异步通信来怎样控制什么的伪代码示例。

将会意识到,为了说明的简单和清楚,没有必要地按比例示出图中的元素。例如,为了清楚,可以将一些元素的尺寸相对于另一些元素进行夸大。

具体实施方式

便携式电子设备可以具有集成其中的硬件用户输入组件,该硬件用户输入组件具有可操作为通过触摸来接受用户输入的多个单元。设备存储器存储由设备的操作系统用来与硬件用户输入组件进行接口连接的用户输入驱动程序。用户输入驱动程序和操作系统可联合操作以检测单元的触摸事件。

例如,硬件用户输入组件可以是具有多个按键的物理触觉键盘,以及用户输入驱动程序可以是用于该键盘的软件驱动程序。软件驱动程序和操作系统可联合操作以检测触摸键盘事件,例如,按键压下和按键松开。图1是示例便携式电子设备100的说明图。具有多个按键104的物理触觉键盘102集成在便携式电子设备100中。虽然在图1中没有说明,用于键盘102的软件驱动程序被存储在便携式电子设备100的存储器中。

在另一示例中,硬件用户输入组件可以是具有多个触摸传感器的触摸屏,以及用户输入驱动程序可以是用于触摸传感器的软件驱动程序。可以通过手指或手,或者通过铁笔或其他工具来触摸触摸屏。软件驱动程序和操作系统可联合操作,以检测触摸传感器的触摸事件,例如触摸屏压下或触摸屏松开,或者触摸屏滑动或拖曳。在本示例中,设备的存储器存储用于在触摸屏上显示图像的显示器驱动程序。当在触摸屏上显示具有多个按键的虚拟键盘的图像的情况下,针对虚拟键盘中的按键,触摸事件可以包括触摸键盘事件,例如按键压下或按键松开,或者按键挥击(当在按键上移动时改变手指或铁笔或其他指示器的方向)。图2是示例便携式电子设备200的说明图。触摸屏202集成在便携式电子设备200中。在图2所示示例中,在触摸屏202上显示具有多个按键的虚拟键盘的图像204。虽然在图2中没有示出,用于触摸屏202的软件驱动程序被存储在便携式电子设备200的存储器中。

在其他示例中,设备可以是已经将具有多个按键的物理触觉键盘和具有多个触摸传感器的触摸屏都集成在其中。在该示例中,设备的存储器存储用于键盘的软件驱动程序、用于触摸传感器的软件驱动程序以及用于在触摸屏上显示图像的显示器驱动程序。用于键盘的软件驱动程序和操作系统可联合操作以检测触摸键盘事件,例如,按键压下和按键松开。如果在触摸屏上显示具有多个按键的虚拟键盘的图像,针对虚拟键盘中的按键,触摸事件可以包括触摸键盘事件,例如,按键压下和按键松开或者按键滑动。图3是示例便携式电子设备300的说明图。在便携式电子设备300中集成了具有多个按键304的物理触觉键盘302,以及在便携式电子设备300中集成了触摸屏306。在图3所示示例中,在触摸屏306上显示具有多个按键的虚拟键盘的图像308。虽然在图3中没有说明,用于键盘302的软件驱动程序和用于触摸屏306的软件驱动程序被存储在便携式电子设备300的存储器中。

在键盘上键入或者触摸触摸屏可导致移动的移动或设备定向的改变或这二者。设备的移动的幅度和方向可以在几分之一毫米到几厘米的范围内,并且可以是一维的、二维的或者三维的。设备的移动或设备定向的改变可取决于若干因素,包括例如设备的尺寸、硬件用户输入组件的尺寸、正在进行怎样的一序列触摸、用户是左撇子还是右撇子、以及如何稳定设备。取决于设备在其环境中的稳定性,该移动或定向改变可以更加明显。例如,与躺在平坦表面(例如,桌面)上的便携式电子设备相比,在单膝上平衡的便携式电子设备可更加不稳定。在另一示例中,当用户键入或触摸触摸屏时,其用户单手或双手手持的便携式电子设备将经历轻微的移动。

便携式电子设备可以包括一个或多个硬件传感器,各个硬件传感器可操作为产生硬件传感器输出,该硬件传感器输出对设备在其环境内的定向进行指示,或者对设备在其环境内的运动进行指示,或者对设备在其环境内的定向和运动都进行指示。这种硬件传感器的示例的非详尽列表包括加速度计、磁力计和陀螺仪。用于每个这样的硬件传感器的传感器驱动程序被存储在设备的存储器中,以由设备的操作系统用来与硬件传感器进行接口连接。例如,检测到的设备的大致90度的旋转可导致操作系统将其显示定向从横向切换至纵向,或者反之。在另一示例中,检测到将设备显示侧向下放置可导致显示器变暗或者进入设备上锁状态。

可以分析指示设备的移动或指示设备的定向改变或指示这二者的硬件传感器输出,以推导出已激活了键盘上的什么按键或者推导出是否已经在触摸屏上进行了触摸。该分析可以揭示敏感信息。例如,该分析可以揭示已经在键盘上键入的机密密码。在另一示例中,该分析可以揭示触摸屏上已经被触摸(从而担当机密密码)的特定位置。在又一示例中,该分析可以揭示触摸屏上已经被触摸(从而担当机密密码)的特定的位置序列。

事实上,可以设计或修改设备的存储器中存储的软件应用(“恶意软件”),以进行这种恶意的攻击。作为恶意软件进程,处理器执行该软件应用,并且攻击涉及到以下恶意软件进程:其接收对设备的移动进行指示或对设备的定向改变进行指示或对这二者进行指示的硬件传感器输出。攻击还涉及到分析接收到的输出。该进程可以在设备中执行分析,或者可以经由设备的通信接口向外部服务器传输接收到的输出,以由外部服务器进行分析,或者可以在设备中执行初始分析,并且可以经由设备的通信接口向外部服务器传输接收到的输出,以用于进一步的分析。

不是所有接收硬件传感器输出的进程都是恶意的。存在着进程接收硬件传感器输出的合法原因。例如,计步器软件应用接收加速度计输出,以计算用户佩戴或携带该设备已经步行了多远。在另一示例中,游戏应用接收加速度计输出和/或陀螺仪输出,以提供更好的用户控制和调整所显示的图像来反映特定的视角。

当存储在设备的存储器中的软件应用正在由处理器作为进程执行时,可存在这样的时间段,在该时间段期间,设备的操作系统可操作为向进程通知任何检测到的触摸事件,并且在整个这些时间段中,进程有时被称为“在前台”或“在焦点中”运行。在设备包括键盘(物理触觉键盘或在触摸屏上显示的键盘图像)的示例中,在进程正”在前台”或“在焦点中”运行时,向进程传递检测到的触摸键盘事件。在设备包括触摸屏的示例中,在进程正“在前台”或“在焦点中”运行时,向进程传递检测到的触摸事件。当软件应用正在由处理器作为进程执行时,可存在这样的时间段,在该时间段期间,设备的操作系统可操作为不向进程通知任何检测到的触摸事件,并且在整个这些时间段中,进程有时被称为“在后台”或“在焦点外”运行。一般而言,在任何给定的时间处,仅有一个进程“在前台”或“在焦点中”运行,以及所有其他进程都“在后台”或“在焦点外”运行。

图4-1、4-2、4-3、4-4、4-5和4-6几乎彼此相同。其区别仅在于下面的两个序列,这两个序列说明了至第一进程和至第二进程的硬件传感器输出的采样的定时。在本文中被统称为“图4”的图4-1、4-2、4-3、4-4、4-5和4-6沿着时间线400示出了便携式电子设备(例如,便携式电子设备100或便携式电子设备200或便携式电子设备300)的显示器的示例屏幕截图的定时。存储在设备的存储器中的第一软件应用被设备的处理器作为第一进程执行,以及存储在设备的存储器中的第二软件应用被设备的处理器作为第二进程执行。从时间T1至时间T2(表示时间段[T1,T2]),以及从时间T3至时间T4(表示时间段[T3,T4]),设备的操作系统可操作为向第一进程通知任何检测到的触摸事件,以及不向第二进程通知任何检测到的触摸事件。从时间T2至时间T3(表示时间段[T2,T3]),设备的操作系统可操作为向第二进程通知任何检测到的触摸事件,以及不向第一进程通知任何检测到的触摸事件。

在时间段[T1,T2]期间的某个时间处捕捉到的示例屏幕截图402示出了与第一进程相关联的在前台的图像404,以及与第二进程相关联的在后台中部分隐藏的图像406。设备的操作系统向第一进程通知在时间段[T1,T2]期间检测到的触摸事件,例如触摸事件408,并且不向第二进程通知在时间段[T1,T2]期间检测到的触摸事件。在图4所示示例中,检测到的触摸事件408共同对应于文本“好的!”,第一进程来自于对设备的示例聊天软件应用的进程的执行,以及图像404显示文本“好的!”作为参与者A的聊天输入的一部分。

在时间段[T2,T3]期间的某个时间处捕捉到的示例屏幕截图412示出了与第一进程相关联的在后台中部分隐藏的图像414以及与第二进程相关联的在前台的图像416。设备的操作系统向第二进程通知在时间段[T2,T3]期间检测到的触摸事件,例如触摸事件418,并且不向第一进程通知在时间段[T2,T3]期间检测到的触摸事件。在图4所示示例中,检测到的触摸事件418共同对应于文本“Q7%”,第二进程来自于对设备的示例在线银行业务应用的进程的执行,以及图像416在密码输入字段中显示文本“***”,以指示第二进程已经接收到实际的文本输入“Q7%”。

在时间段[T3,T4]期间的某个时间处捕捉到的示例屏幕截图422示出了与第一进程相关联的在前台的图像424,以及与第二进程相关联的在后台中部分隐藏的图像426。设备的操作系统向第一进程通知在时间段[T3,T4]期间检测到的触摸事件,例如触摸事件428,并且不向第二进程通知在时间段[T3,T4]期间检测到的触摸事件。在图4所示示例中,检测到的触摸事件428共同对应于文本“如何”,以及图像424显示文本“如何”,作为参与者A的聊天输入的一部分。

在设备的操作系统可操作为向进程通知任何检测到的触摸事件的时间段中,进程可以从这些通知直接、完全准确地推导出已经激活了键盘上的什么按键或已经在触摸屏上的何处进行了触摸或这二者。对在这些事件段期间采样的硬件传感器输出的任何分析将不会产生与触摸事件有关的附加信息。因此,与接收硬件传感器输出的进程有关的任何关注可以涉及到在设备的操作系统可操作为不向进程通知任何检测到的触摸事件的这些时间段期间采样的硬件传感器输出。参考图4所示简化示例,示出了硬件传感器输出的示例采样的序列440。与接收硬件传感器输出的第一进程有关的关注可以涉及在时间段[T2,T3]期间采样的硬件传感器输出的采样460,以及与接收硬件传感器输出的第二进程有关的关注可以涉及在时间段[T1,T2]期间采样的硬件传感器输出的采样450以及在时间段[T3,T4]期间采样的硬件传感器输出的采样470。

用于阻止攻击的防止接收方案

用于阻止攻击的一个方案是防止接收硬件传感器输出。如果进程不可接收到硬件传感器输出,进程便不可能分析硬件传感器输出(或不可能由进程向远程服务器发送以用于分析),并从而进程(或远程服务器)不能推导出在键盘上已经激活了什么按键或在触摸屏上的何处已经进行了触摸或这二者。

针对任何进程,存在这样的时间段,在该时间段期间,设备的操作系统可操作为不向进程通知任何检测到的触摸事件。为了实现用于阻止攻击的“防止接收”方案,传感器驱动程序或设备的操作系统或这二者可被配置为使得进程不可接收在这些时间段期间采样的任何硬件传感器输出。参考图4-1所示简化采样。由于传感器驱动程序或设备的操作系统或这二者的配置,第一进程可接收硬件传感器输出的采样序列4-1-1。序列4-1-1与序列440的不同之处在于省略了采样460(因为采样460是在时间段[T2,T3]期间采样的,在时间段[T2,T3]期间,设备的操作系统可操作为不向第一进程通知任何检测到的触摸事件)。从而,即使第一进程请求硬件传感器输出的采样,第一进程也将不能够推导出在时间段[T2,T3]期间键入了文本“Q7%”,因为第一进程不可接收且未接收在键入文本时采样的硬件传感器输出。由于传感器驱动程序或设备的操作系统或这二者的配置,第二进程可接收硬件传感器输出的采样序列4-1-2。序列4-1-2与序列440的不同之处在于省略了采样450(因为采样450是在时间段[T1,T2]期间采样的,在时间段[T1,T2]期间,设备的操作系统可操作为不向第二进程通知任何检测到的触摸事件)以及省略了采样470(因为采样470是在时间段[T3,T4]期间采样的,在时间段[T3,T4]期间,设备的操作系统可操作为不向第二进程通知任何检测到的触摸事件)。从而,即使第二进程请求硬件传感器输出的采样,第二进程也将不能够推导出在时间段[T1,T2]期间键入了文本“好的!”,并且也将不能够推导出在时间段[T3,T4]期间键入了文本“如何”,因为第二进程不可接收且未接收在键入文本“好的!”时采样的硬件传感器输出和在键入文本“如何”时采样的硬件传感器输出。

用于阻止攻击的伪硬件传感器输出方案

用于阻止攻击的另一方案是提供从其不可能推导出实际硬件传感器输出并且从其不可能区分触摸事件的伪硬件传感器输出。

如上所述,针对任何进程,存在这样的时间段,在该时间段期间,设备的操作系统可操作为不向进程通知任何检测到的触摸事件。为了实现用于阻止攻击的“伪硬件传感器输出”方案,传感器驱动程序或设备的操作系统或这二者可被配置为使得进程可接收伪硬件传感器输出,而不是在这些时间段期间采样的实际硬件传感器输出。该“伪硬件传感器输出”方案与“防止接收”方案的相似之处在于:进程不可接收在设备的操作系统可操作为不向进程通知任何检测到的触摸事件的时间段期间采样的硬件传感器输出。

参考图4-2所示的简化采样。由于传感器驱动程序或设备的操作系统或这二者的配置,第一进程可接收硬件传感器输出的采样序列4-2-1。序列4-2-1与序列440的不同之处在于序列4-2-1包含了伪硬件传感器输出的采样461而不是采样460(因为采样460是在时间段[T2,T3]期间采样的,在时间段[T2,T3]期间,设备的操作系统可操作为不向第一进程通知任何检测到的触摸事件)。从而,即使第一进程请求硬件传感器输出的采样,第一进程也将不能够推导出在时间段[T2,T3]期间键入了文本“Q7%”,因为第一进程不可接收并且未接收在键入文本时采样的硬件传感器输出。

由于传感器驱动程序或设备的操作系统或这二者的配置,第二进程可接收硬件传感器输出的采样序列4-2-2。序列4-2-2与序列440的不同之处在于:序列4-2-2包含i)伪硬件传感器输出的采样451而不是采样450(因为采样450是在时间段[T1,T2]期间采样的,在时间段[T1,T2]期间,设备的操作系统可操作为不向第二进程通知任何检测到的触摸事件)以及ii)伪硬件传感器输出的采样471而不是采样470(因为采样470是在时间段[T3,T4]期间采样的,在时间段[T3,T4]期间,设备的操作系统可操作为不向第二进程通知任何检测到的触摸事件)。从而,即使第二进程请求硬件传感器输出的采样,第二进程也将不能够推导出在时间段[T1,T2]期间键入了文本“好的!”,并且也将不能够推导出在时间段[T3,T4]期间键入了文本“如何”,因为第二进程不可接收且未接收在键入文本“好的!”时采样的硬件传感器输出和在键入文本“如何”时采样的硬件传感器输出。

用于阻止攻击的足够低的采样速率方案

用于阻止攻击的另一方案是以不高于“足够低的采样速率”的采样速率向进程提供硬件传感器输出,该足够低的采样速率低到足以从所提供的硬件传感器输出的采样不能够区分触摸事件的程度。足够低的采样速率的示例是大致1Hz到大致2Hz的范围内,即,大致每秒一个采样至大致每秒两个采样的采样速率。

如上所述,针对任何进程,存在这样的时间段,在该时间段期间,设备的操作系统可操作为不向进程通知任何检测到的触摸事件。为了实现用于阻止攻击的“足够低的采样速率”方案,传感器驱动程序或设备的操作系统或这二者可被配置为使得进程可以接收在这些时间段期间以不高于足够低的采样速率的采样速率来采样的硬件传感器输出。

参考图4-3所示的简化采样。由于传感器驱动程序或设备的操作系统或这二者的配置,第一进程可接收硬件传感器输出的采样序列4-3-1。序列4-3-1与序列440的不同之处在于采样460以不高于足够低的采样速率的采样速率包括在序列4-3-1中(因为采样460是在时间段[T2,T3]期间采样的,在时间段[T2,T3]期间,设备的操作系统可操作为不向第一进程通知任何检测到的触摸事件)。从而,即使第一进程请求硬件传感器输出的采样,第一进程也将不能够推导出在时间段[T2,T3]期间键入了文本“Q7%”,因为不能够从第一进程可接收(并且很可能甚至是接收到的)的少量采样460区分出文本“Q7%”。

由于传感器驱动程序或设备的操作系统或这二者的配置,第二进程可接收硬件传感器输出的采样序列4-3-2。序列4-3-2与序列440的不同之处在于采样450以不高于足够低的采样速率的采样速率包括在序列4-3-2中(因为采样450是在时间段[T1,T2]期间采样的,在时间段[T1,T2]期间,设备的操作系统可操作为不向第二进程通知任何检测到的触摸事件)以及采样470仅以足够低的采样速率包括在序列4-3-2中(因为采样470是在时间段[T3,T4]期间采样的,在时间段[T3,T4]期间,设备的操作系统可操作为不向第二进程通知任何检测到的触摸事件)。从而,即使第二进程请求硬件传感器输出的采样,第二进程也将不能够推导出在时间段[T1,T2]期间键入了文本“好的!”,因为不能够从第二进程可接收(并且很可能甚至是接收到的)的少量采样450区分出文本“好的!”,并且也将不能够推导出在时间段[T3,T4]期间键入了文本“如何”,因为不能够从第二进程可接收(并且很可能甚至是接收到的)的少量采样470区分出文本“如何”。

针对虚拟键盘显示的键盘

在设备不具有物理触觉键盘并且虚拟键盘的图像可显示在设备的触摸屏上的情况下,以及在关注特别针对于检测到的表示经由虚拟键盘输入的触摸事件(而不是检测到的任何类型的触摸事件)的情况下,是否显示虚拟键盘的图像的问题是相关的。在没有在触摸屏上显示虚拟键盘的图像时检测到的任何触摸事件不表示经由虚拟键盘的输入。因此,在设备的操作系统可操作为不向进程通知任何检测到的触摸事件的这些时间段期间,与接收硬件传感器输出的进程有关的任何关注可以涉及在显示虚拟键盘的图像时采样的硬件传感器输出。

防止接收方案的显示键盘变型

如上所述,针对任何进程,存在这样的时间段,在该时间段期间,设备的操作系统可操作为不向进程通知任何检测到的触摸事件。在用于阻止攻击的“防止接收”方案的备选实现中,传感器驱动程序或设备的操作系统或这二者可被配置为使得进程不可接收在这些时间段期间在显示虚拟键盘的图像时采样的任何硬件传感器输出。从而,即使进程请求硬件传感器输出的采样,进程也将不能够推导出在虚拟键盘上已经激活了什么按键,因为进程接收到的任何硬件传感器输出都不是当在触摸屏上进行的触摸表示对虚拟键盘的输入时采样的。

伪硬件传感器输出方案的显示键盘变型

如上所述,针对任何进程,存在这样的时间段,在该时间段期间,设备的操作系统可操作为不向进程通知任何检测到的触摸事件。在用于阻止攻击的“伪硬件传感器输出”方案的备选实现中,传感器驱动程序或设备的操作系统或这二者可被配置为使得进程不可接收在这些时间段期间在显示虚拟键盘的图像时采样的任何硬件传感器输出,并且使进程代之以接收伪硬件传感器输出。从而,即使进程请求硬件传感器输出的采样,进程也将不能够推导出在虚拟键盘上已经激活了什么按键,因为进程接收到的任何实际的硬件传感器输出都不是当在触摸屏上进行的触摸表示对虚拟键盘的输入时采样的。

足够低的采样速率方案的显示键盘变型

如上所述,针对任何进程,存在这样的时间段,在该时间段期间,设备的操作系统可操作为不向进程通知任何检测到的触摸事件。在用于阻止攻击的“足够低的采样速率”方案的备选实现中,传感器驱动程序或设备的操作系统或这二者可被配置为使得进程可以接收在这些时间段期间在显示虚拟键盘的图像时以不高于足够低的采样速率的采样速率来采样的硬件传感器输出。从而,即使进程请求硬件传感器输出的采样,进程也将不能够推导出在虚拟键盘上已经激活了什么按键,因为从进程接收到的硬件传感器输出的少量采样不能够区分对虚拟键盘的输入。

触摸事件窗口

对于物理触觉键盘,在对按键压下的检测中涉及到硬件延迟和软件延迟。如所预期的,硬件中的差异将导致不同的硬件延迟,并且软件中的差异将导致不同的软件延迟。当在软件检测到已经发生了按键压下之前正在压下按键时,存在着设备的移动或定向改变或这二者。从而,对于物理触觉键盘的示例,触摸事件窗口可被定义为在检测到按键压下前不久处开始,如在检测到按键压下前的大致20毫秒至70毫秒的范围内,例如,50毫秒。对于更快检测到按键压下的硬件/软件组合,触摸事件窗口可被定义为在甚至更靠近检测到按键压下的时间处开始。对于更慢检测到按键压下的硬件/软件组合,触摸事件窗口可被定义为在甚至距离检测到按键压下的时间更靠前处开始。

对于物理触觉键盘,在对按键松开的检测中涉及到硬件延迟和软件延迟。如所预期的,硬件中的差异将导致不同的硬件延迟,并且软件中的差异将导致不同的软件延迟。此外,对于按键压下和按键松开的不同序列,设备的移动或设备的定向改变或这二者很可能是不同的。例如,在QWERTY键盘布局中,与在键入“p”之后键入“h”所导致的设备的移动或设备的定向改变或这二者相比,在键入“e”之后键入“a”可导致不同的设备的移动或设备的定向改变或这二者。从而,针对物理触觉键盘的示例,可以将触摸事件窗口定义为在检测到键盘松开后的某个时刻处结束,例如,在检测到按键松开后的大致200毫秒处。对于更快检测到按键松开的硬件/软件组合,或者对于在设备的移动或定向改变或这二者方面区别不大的按键压下和松开的不同序列,可以将触摸事件窗口定义为甚至更靠近检测到按键松开的时间处结束。对于更慢检测到按键松开的硬件/软件组合,或者对于在设备的移动或定向改变或这二者方面区别较大的按键压下和松开的不同序列,可以将触摸事件窗口定义为甚至在检测到按键松开的时间之后更久处结束。

与物理触觉键盘相比,定义触摸屏的触摸事件窗口更加困难,这部分是因为触摸事件的种类的多样性(触摸屏压下、触摸屏松开、触摸屏滑动或拖曳、按键挥击)。对于触摸屏,触摸事件窗口的持续时间和定时可取决于触摸屏登记触摸事件有多快。作为任意的示例,可以将触摸事件窗口定义为在检测到触摸屏事件之前大致75毫秒开始以及在检测到触摸屏事件之后大致200毫秒结束。

可以针对任何的触摸事件并针对具有多个单元的任何硬件用户输入组件来定义触摸事件窗口,该多个单元可操作为通过触摸来接受用户输入。在4-4、4-5和4-6所示的简化示例中,说明了触摸事件408、418和428及其相应的触摸事件窗口409、419和429。一些触摸事件具有重叠的触摸事件窗口,导致单个扩展的触摸事件窗口。

防止接收方案的触摸事件窗口变型

如上所述,针对任何进程,存在这样的时间段,在该时间段期间,设备的操作系统可操作为不向进程通知任何检测到的触摸事件。在用于阻止攻击的“防止接收”方案的备选实现中,传感器驱动程序或设备的操作系统或这二者可被配置为使得进程不可接收在这些时间段中出现的触摸事件窗口期间采样的任何硬件传感器输出。

参考图4-4所示的简化采样。由于传感器驱动程序或设备的操作系统或这二者的配置,第一进程可接收硬件传感器输出的采样序列4-4-1。序列4-4-1与序列440的不同之处在于:省略了在触摸事件窗口419期间采样的那些采样460(因为触摸事件窗口419出现在时间段[T2,T3]期间)。从而,即使第一进程请求硬件传感器输出的采样,第一进程也将不能够推导出在时间段[T2,T3]期间键入了文本“Q7%”,因为第一进程不可接收且未接收在键入文本时采样的硬件传感器输出。

由于传感器驱动程序或设备的操作系统或这二者的配置,第二进程可接收硬件传感器输出的采样序列4-4-2。序列4-4-2与序列440的不同之处在于:省略了在触摸事件窗口409期间采样的那些采样450(因为触摸事件窗口409出现在时间段[T1,T2]期间),以及省略了在触摸事件窗口429期间采样的那些采样470(因为触摸事件窗口429出现在时间段[T3,T4]期间)。从而,即使第二进程请求硬件传感器输出的采样,第二进程也将不能够推导出在时间段[T1,T2]期间键入了文本“好的!”,并且也将不能够推导出在时间段[T3,T4]期间键入了文本“如何”,因为第二进程不可接收且未接收在键入文本“好的!”时采样的硬件传感器输出和在键入文本“如何”时采样的硬件传感器输出。

伪硬件传感器输出方案的触摸事件窗口变型

如上所述,针对任何进程,存在这样的时间段,在该时间段期间,设备的操作系统可操作为不向进程通知任何检测到的触摸事件。在用于阻止攻击的“伪硬件传感器输出”方案的备选实现中,传感器驱动程序或设备的操作系统或这二者可被配置为使得进程不可接收在这些时间段中出现的触摸事件窗口期间采样的任何硬件传感器输出。

备选地,可以向进程提供伪硬件传感器输出,而不是在触摸事件窗口期间采样的实际硬件传感器输出,该触摸事件窗口出现在设备的操作系统可操作为不向进程通知任何检测到的触摸事件的时间段中。

参考图4-5所示的简化采样。由于传感器驱动程序或设备的操作系统或这二者的配置,第一进程可接收硬件传感器输出的采样序列4-5-1。序列4-5-1与序列440的不同之处在于:序列4-5-1包含伪硬件传感器输出的采样462和伪硬件传感器输出的采样463,而不是在触摸事件窗口419期间采样的那些采样460(因为触摸事件窗口419出现在时间段[T2,T3]期间)。从而,即使第一进程请求硬件传感器输出的采样,第一进程也将不能够推导出在时间段[T2,T3]期间键入了文本“Q7%”,因为第一进程不可接收且未接收在键入文本时采样的硬件传感器输出。

由于传感器驱动程序或设备的操作系统或这二者的配置,第二进程可接收硬件传感器输出的采样序列4-5-2。序列4-5-2与序列440的不同之处在于序列4-5-2包含伪硬件传感器输出的采样452和伪硬件传感器输出的采样453,而不是在触摸事件窗口409期间采样的那些采样450(因为触摸事件窗口409出现在时间段[T1,T2]期间),并且在于序列4-5-2包含伪硬件传感器输出的采样472,而不是在触摸事件窗口429期间采样的那些采样470(因为触摸事件窗口429出现在时间段[T3,T4]期间)。

足够低的采样速率方案的触摸事件窗口变型

如上所述,针对任何进程,存在这样的时间段,在该时间段期间,设备的操作系统可操作为不向进程通知任何检测到的触摸事件。在用于阻止攻击的“足够低的采样速率”方案的备选实现中,传感器驱动程序或设备的操作系统或这二者可被配置为使得进程可接收在这些时间段中出现的触摸事件窗口期间以不高于足够低的采样速率的采样速率来采样的硬件传感器输出。

参考图4-6所示的简化采样。由于传感器驱动程序或设备的操作系统或这二者的配置,第一进程可接收硬件传感器输出的采样序列4-6-1。序列4-6-1与序列440的不同之处在于在触摸事件窗口419期间以不高于足够低的采样速率的采样速率来采样的那些采样460被包括在序列4-6-1中(因为触摸事件窗口419出现在时间段期间[T2,T3])。从而,即使第一进程请求硬件传感器输出的采样,第一进程也将不能够推导出在时间段[T2,T3]期间键入了文本“Q7%”,因为不能够从第一进程可接收(并且很可能甚至是接收到的)的少量采样460区分出文本“Q7%”。

由于传感器驱动程序或设备的操作系统或这二者的配置,第二进程可接收硬件传感器输出的采样序列4-6-2。序列4-6-2与序列440的不同之处在于在触摸事件窗口409期间以不高于足够低的采样速率的采样速率来采样的那些采样450被包括在序列4-6-2中(因为触摸事件窗口409出现在时间段期间[T1,T2]),以及在触摸事件窗口429期间以不高于足够低的采样速率的采样速率来采样的那些采样470被包括在序列4-6-2中(因为触摸事件窗口429出现在时间段期间[T3,T4])。从而,即使第二进程请求硬件传感器输出的采样,第二进程也将不能够推导出在时间段[T1,T2]期间键入了文本“好的!”,因为不能够从第二进程可接收(并且很可能甚至是接收到的)的少量采样450区分出文本“好的!”,并且也将不能够推导出在时间段[T3,T4]期间键入了文本“如何”,因为不能够从第二进程可接收(并且很可能甚至是接收到的)的少量采样470区分出文本“如何”。

方案的稳定性比较

如果第一进程期望接收硬件传感器输出的采样的连续供给,在序列4-1-1和4-4-1中,在第一进程可接收的采样中存在间隙,这可导致第一进程的中断或不稳定。类似地,如果第二进程期望接收硬件传感器输出的采样的连续供给,在序列4-1-2和4-4-2中,在第二进程可接收的采样中存在间隙,这可导致第二进程的中断或不稳定。

如果第一进程期望接收硬件传感器输出的采样的连续供给,接收采样速率不高于足够低的采样速率的采样(如序列4-3-1和4-5-1中)可导致第一进程的中断或不稳定。类似地,如果第二进程期望接收硬件传感器输出的采样的连续供给,接收采样速率不高于足够低的采样速率的采样(如序列4-3-2和4-5-2中)可导致第二进程的中断或不稳定。

相反,在序列4-2-1和4-6-1中,在第一进程可接收的采样中没有间隙,以及在序列4-2-2和4-6-2中,在第二进程可接收的采样中没有间隙。

对于某些进程,“足够低的采样速率”方案可以通过足够的速率来提供采样,以避免中断或不稳定。将该足够低的采样速率替换为低采样速率也是可能的,该低采样速率低于当设备的操作系统可操作为向进程通知任何检测到的触摸事件时硬件传感器输出可被接收的采样速率,该低采样速率还高于该足够低的采样速率。例如,替代用不高于大致1Hz至大致2Hz的采样速率向进程提供硬件传感器输出,可以通过大致5Hz至大致10Hz的采样速率来提供硬件传感器输出。这可能提供较少的保护来对抗攻击,然而与纯粹的“足够低的采样速率”方案相比,更加稳定。针对其他进程,用于阻止攻击的“伪硬件传感器输出”方案可导致更稳定的操作。

在便携式电子设备中实现的情况下,将前述用于阻止攻击的任何方案应用于由设备的处理器对存储在设备的存储器中的软件应用的执行而导致的所有进程。然而,为了从任何前述方案的应用中免除一个或多个进程,便携式电子设备可以维护所免除的一个或多个进程(或其相应的软件应用程序)的列表,并且传感器驱动程序或设备的操作系统或这二者可被配置为不向在该列表中标识的进程应用任何阻止方案。换言之,被免除的进程是具有以下许可的进程:即使所请求的采样速率高于足够低的采样速率,在被免除的进程正在运行的所有时间,不管设备的操作系统是否可操作为向进程通知或不通知任何检测到的触摸事件,以所请求的采样速率来接收实际硬件传感器输出的采样。可以在将软件应用安装在便携式电子设备期间或之后实现将该软件应用或其进程指派为被免除的。可以通过任何适合的方式来实现将软件应用或其进程指派为被免除的。确切的实现超出本文档的范围。然而,一些示例是:设备的制造商规定具体的软件应用是被免除的,从设备的用户接收对具体的软件应用是被免除的指示,或者确定来自具体创建者的软件应用是被免除的。

对进程可接收的硬件传感器输出的控制

一般而言,硬件传感器输出是进程通过同步通信或通过异步通信可接收的。同步通信(也被称为轮询)涉及进程打开至传感器驱动程序的连接,并以特定的频率(采样速率)调入传感器驱动程序来请求新采样。将超时定义为采样速率的倒数。传感器驱动程序可以用新采样或者对没有新采样可用的指示来响应每个请求。备选地,仅在一旦由采样速率指定的定时已经到达时,传感器驱动程序才可以用当前传感器数据来响应请求,即,操作系统中止运行进程,直到定时到达,然后提供当前的传感器数据。异步通信(也被称为事件驱动的通信)涉及进行请求的进程,该进程以由采样速率指定的特定间隔被告知当前传感器读数。例如,可以使用中断或信号来告知该进程。不同的进程可以按不同的采样速率来请求硬件传感器输出。在所有的情况下,负责向请求采样的进程提供硬件传感器输出的是传感器驱动程序以及设备的操作系统。由此,可被配置为控制进程可接收什么(如果有)硬件传感器输出的是传感器驱动程序或设备的操作系统或这二者。

在附录A(针对同步通信)和附录B(针对异步通信)中提供了传感器驱动程序可以如何控制进程可接收什么(如果有)硬件传感器输出的伪代码示例。

触摸事件窗口变型的缓冲

如上所述,触摸事件窗口在检测到触摸事件之前不久处开始。从而,为了实现上述方案的触摸事件窗口变型,传感器驱动程序或设备的操作系统或这二者可被配置为在使进程可接收硬件传感器输出的采样之前的时间段中缓冲硬件传感器输出。该时间段等于触摸事件窗口开始时与检测到触摸事件时之间的时间。例如,可以将传感器采样存储在固定大小的先进先出(FIFO)队列中,其中,将当前传感器采样放置在队列的末端,并在每次超时(超时是采样速率的倒数)时移除队列前端(head)处的传感器采样,并将其返回给进程。

如何伪造硬件传感器输出

通过将实际的硬件传感器输出通过低通滤波器,并从而从该硬件传感器输出移除可从其区分触摸事件的任何信息,可以由实际的硬件传感器输出来编造伪硬件传感器输出。例如,通过将多个采样一起求平均,可以实现与低通滤波器相似的处理。针对每个采样,向进程返回的值实际上是过去的N个采样的平均。使用N的值来指定阈值有多低。例如,可以使用大致1Hz至2Hz的阈值。

备选地,可以由以下的任意一顶或任何组合来编造伪硬件传感器输出:i)随机数据,ii)预制的数据,例如常数和固定的波形,以及iii)在没有检测到触摸事件时采样的实际硬件传感器输出。

图5示出了由便携式电子设备中的陀螺仪产生的示例的实际陀螺仪数据以及示例的伪陀螺仪数据。在便携式电子设备的键盘上键入一系列的按键,由垂直线来指示各个按键压下的定时。在第一按键压下的定时之前示出了实际陀螺仪数据的X分量、Y分量和Z分量波形。在第一按键压下的定时之前不久处,将实际的陀螺仪数据替换为X分量、Y分量和Z分量的所编造的常数值。所编造的常数值与最近的实际陀螺仪值相同,并在整个键入的序列期间保持。对图5所示数据的分析将不会得到已经压下哪些按键。

图6示出了由便携式电子设备中的陀螺仪产生的示例的实际陀螺仪数据以及示例的伪陀螺仪数据。在便携式电子设备的键盘上键入一系列的按键,由垂直线来指示各个按键压下的定时。插入物(inset)示出了在第二按键压下的定时周围的放大的细节。在第一按键压下的定时之前示出了实际陀螺仪数据的Y分量波形。在每个按键压下的定时之前不久,针对Y分量,将实际的陀螺仪数据替换为所编造的常数值。所编造的常数值与最近的实际陀螺仪值相同并被维持,直到以下各项的较早者:i)针对该按键压下的触摸事件窗口结束,或者ii)在下一个按键压下之前不久,在该点处,针对Y分量使用已更新的最近的常数值。从而,从第一按键压下之前不久到第一按键压下之后的某个时间示出了所编造的常数值,随后是实际的陀螺仪数据,随后是与第二按键压下之前不久的最近的实际陀螺仪值相同的新的编造的常数值。也可以将该编造伪陀螺仪数据的技术应用于陀螺仪数据的X分量和Z分量波形,为了清楚,在图6中单独示出了Y分量。对图6所示数据的分析将不会得到已经压下哪些按键。

图7-1示出了便携式电子设备中的加速度计产生的示例的实际加速度计数据。在便携式电子设备的键盘上键入一系列的按键,由垂直线来指示各个按键压下的定时。插入物示出了示例的实际加速度计数据的Z分量的一部分的放大细节。在按键压下的定时周围,在示例的实际加速度计数据的Z分量中存在尖峰。图7-2示出了示例加速度计数据,其部分是由加速度计产生的实际加速度计数据,部分是伪加速度计数据。在键盘上键入一系列的按键,由垂直线来指示各个按键压下的定时。从每个按键压下之前大致75毫秒直到该按键压下之后的大致200毫秒示出的示例加速度计数据是伪加速度计数据。插入物示出了Z分量的一部分的放大细节。由于将实际加速度计数据替换为编造的伪加速度计数据,已经消除了示例的实际加速度计数据的Z分量中在按键压下的定时周围的尖峰。对图7-2所示数据的分析将不会得到已经压下哪些按键。

在该示例中,通过下面的方式编造伪加速度计数据:

1)测量从按键压下之前175毫秒到按键压下之前75毫秒,Z分量加速度计数据的最小值和最大值(Zmin和Zmax);

2)计算通过按键压下之前175毫秒到按键压下之前75毫秒的点的线的斜率(Zslope),以及

计算伪加速度计数据的每个点(Zi),i表示从上一个未编造(即,实际)数据点开始的以毫秒计的时间偏移,使用编造点等式Zi=Z0+i*Zslope+(Zmax-Zmin)sin(i/60),其中,Z0是紧接在所编造的数据的开始之前的实际数据点。

对i/60的选择是任意的。可以在编造点等式中使用不同的函数来替代正弦函数。

为了使用该方法来编造陀螺仪数据,将编造点等式替换为以下的编造点等式Zi=Z0*cos(i/175)+0.25(Zmax-Zmin)sin(i/20),该等式被发现产生更看似真实的伪陀螺仪数据。在余弦函数内部作为分数的分母的值175表示接近于要使用所编造的数据的时间的值。将正弦元素包括在等式中,以提供更多的变化。

功能框图

图8是示例便携式电子设备10(例如,便携式电子设备100、200或300)的简化功能框图。为了清楚,在图8中没有示出并且没有明确地描述便携式电子设备10的一些组件和特征。可以通过任意希望的方式实现并在便携式电子设备10的物理组件之间分布便携式电子设备10中包括的功能,例如,集成电路、分立元件、印刷电路板(PCB)、配件或子配件。

便携式电子设备10由可拆卸或不可拆卸的电源组12(例如,电池组)供电。便携式电子设备10包括至少一个处理器14以及存储器16。存储器16存储要由处理器14执行的操作系统。存储器16存储要由处理器14作为进程执行的一个或多个软件应用20。操作系统18管理便携式电子设备10的操作。例如,操作系统18可以通过软件驱动程序以及其他手段来操作便携式电子设备10的硬件组件。在另一示例中,操作系统18可以通过处理器14来调度软件的执行。

至少一个硬件用户输入组件22集成在便携式电子设备10中。硬件用户输入组件22具有可操作为通过触摸来接受用户输入的多个单元24。存储器16存储用户输入驱动程序26,以由操作系统18用来与硬件用户输入组件22进行接口连接。用户输入驱动程序26和操作系统18可联合操作以检测单元24的触摸事件。操作系统18可操作为向“在前台”或者“在焦点中”运行的进程通知任何检测到的触摸事件。如上关于硬件传感器输出所讨论的,该通知可经由同步通信(例如,轮询)或经由异步通信(例如,中断)而发生。操作系统18可操作为不向“在后台”或者“在焦点外”运行的进程通知任何检测到的触摸事件。

物理触觉键盘是硬件用户输入组件的示例。触摸屏是硬件用户输入组件的另一示例。将便携式电子设备10说明为具有在其中集成的至少一个硬件用户输入组件22、物理触觉键盘32和触摸屏42并不意在暗示该配置是强制的。相反,便携式电子设备10可以仅具有在其中集成的单个硬件用户输入组件22,该单个硬件用户输入组件22可以是物理触觉键盘32(这是针对便携式电子设备100的情况)或者触摸屏42(这是针对便携式电子设备200的情况)或者任何其他适合的硬件用户输入组件。类似地,便携式电子设备10可以仅具有在其中集成的两个硬件用户输入组件22,例如,物理触觉键盘32和触摸屏42(这是针对便携式电子设备300的情况)。

物理触觉键盘32具有多个按键34,以及存储器16可以存储针对物理触觉键盘32的键盘驱动程序36。键盘驱动程序36和操作系统18可联合操作以检测触摸键盘事件,例如,按键压下和按键松开。键盘驱动程序36耦合到键盘缓冲区38,以存储由键盘驱动程序36捕捉的来自物理触觉键盘32的输出。

触摸屏42具有多个触摸传感器44,以及存储器16可以存储针对触摸传感器44的触摸传感器驱动程序46。可以通过手指或手,或者通过铁笔或其他工具来触摸触摸屏42。触摸传感器驱动程序46和操作系统18可联合操作,以检测触摸传感器的触摸事件,例如触摸屏压下或触摸屏松开,或者触摸屏滑动或拖曳,或者按键挥击。触摸传感器驱动程序46耦合到触摸传感器缓冲区48,以存储由触摸传感器驱动程序46捕捉的来自触摸传感器44的输出。操作系统18可操作为采样并缓冲由触摸传感器驱动程序46捕捉的输出。可以仅当触摸传感器驱动程序46已经检测到激活时才进行采样,或者操作系统18可以定期地采样并缓冲输出,并通过注意到所缓冲的输出中的改变来检测到触摸事件。

触摸屏42包括显示器54,以及存储器16可以存储用于在显示器54上显示图像的显示器驱动程序56。显示器驱动程序56耦合到显示器缓冲区58,显示器缓冲区58存储要在显示器54上显示的图像。显示器54的示例的非详尽列表包括液晶显示器(LCD)、发光二极管(LED)显示器和有机LED(OLED)显示器。

图8中将存储器16、硬件用户输入组件22、物理触觉键盘32和触摸屏42至处理器14的耦合示出为单个总线11。

便携式电子设备10包括一个或多个硬件传感器60,以及存储器16可以存储一个或多个传感器驱动程序61,以由操作系统18用来与硬件传感器60进行接口连接。硬件传感器60可操作为产生硬件传感器输出,该硬件传感器输出指示便携式电子设备10在其环境内的定向,或者指示便携式电子设备10在其环境内的运动,或者指示便携式电子设备10在其环境内的定向和运动。

例如,硬件传感器60可以包括加速度计62,以及传感器驱动程序61可以包括由操作系统18用来与加速度计62进行接口连接的驱动程序63。

在另一示例中,硬件传感器60可以包括陀螺仪64,以及传感器驱动程序61可以包括由操作系统18用来与陀螺仪64进行接口连接的驱动程序65。

在又一示例中,硬件传感器60可以包括磁力计66,以及传感器驱动程序61可以包括由操作系统18用来与磁力计66进行接口连接的驱动程序67。

图9是示例便携式电子设备10以及三坐标系统的说明图。设备坐标系统70包括三个相互垂直的轴72、74和76,分别标记为“X”、“Y”和“Z”。设备坐标系统70具有相对于便携式电子设备10的固定定向。换言之,当便携式电子设备10移动并改变其定向时,设备坐标系统70精确地移动并改变其定向。重力坐标系统80包括三个相互垂直的轴82、84和86,分别标记为“G1”、“G2”和“G3”。重力坐标系统80具有相对于地球重力的固定定向。换言之,重力坐标系统80总是指示地球重力的方向。磁场坐标系统90包括三个相互垂直的轴92、94和96,分别标记为“M1”、“M2”和“M3”。磁场坐标系统90具有朝向地球的磁场或者朝向在便携式电子设备10的最近处更强的另一磁场的固定定向。

将硬件传感器60以相对于设备坐标系统70的固定定向安装在便携式电子设备10中。

参照重力坐标系统80或磁场坐标系统90,硬件传感器60可以提供“绝对”的定向和/或运动信息。例如,参考磁场坐标系统90,磁力计66可以提供与设备坐标系统70的定向有关的信息。在另一示例中,参考重力坐标系统80,加速度计62可以提供与设备坐标系统70的定向有关的信息。

硬件传感器60可以提供与运动或定向改变或这二者有关的信息,该运动或定向改变或这二者相对于设备坐标系统70,并且没有绝对参照重力坐标系统80或磁场坐标系统90。例如,加速度计62可以提供与便携式电子设备10沿着设备坐标系统70的轴X、Y和Z的运动有关的信息,以及陀螺仪64可以提供与便携式电子设备10关于设备坐标系统70的轴X、Y和Z的定向有关的信息。

修改

迄今,本文档已经讨论了具有在其中集成的硬件用户输入组件和硬件传感器(例如,加速度计或陀螺仪或磁力计)的设备,该硬件用户输入组件具有可操作为通过触摸来接受用户输入的多个单元,硬件传感器受到触摸的影响。然而,针对具有触摸屏的设备,并且在具有多个按键的虚拟键盘的图像可显示在触摸屏上的情况下,可以使用集成在设备中的眼睛跟踪传感器来跟踪用户的眼睛移动,并且在显示虚拟键盘的图像时,由眼睛跟踪传感器的输出来确定键盘输入。如上所述,在进程“在前台”或“在焦点中”运行时,设备的操作系统可操作为向进程通知任何检测到的键盘输入,以及当进程“在后台”或“在焦点外”运行时,可操作为不向进程通知任何检测到的键盘输入。

可以将以上相对于指示设备的运动或定向改变或这二者的硬件传感器输出来描述的方案和变型修改为应用于眼睛跟踪传感器的输出。例如,用于阻止攻击的“防止接收”方案可以涉及眼睛跟踪传感器的驱动程序和/或操作系统,该眼睛跟踪传感器的驱动程序和/或操作系统被配置为在操作系统可操作为不向进程通知任何检测到的键盘输出的这些时间段期间,进程不可接收眼睛跟踪传感器输出。

虽然已经以结构特征和/或方法学行为所特有的语言对主题进行了描述,应该理解,没有必要将所附权利要求中限定的主题限制为上述的特定特征或行为。相反,将上述的特定特征和行为作为实现该权利要求的示例形式进行公开。

附录A

同步通信的伪代码示例

下面的伪代码示例被设计为传感器驱动程序中的函数。该伪代码示例基于下面的假设:wait_for_hardware_sensor_sample()将在等待1000/hardware_sensor_rate毫秒之后返回新的传感器采样。呈现了多个不同的选项,在每个选项之前放置指示针对该选项的特定设置的文本行。应用调用get_sensor_sample,get_sensor_sample在传感器采样可用时返回传感器采样。

在伪代码示例中,将被免除的进程称为特权应用。可以修改该伪代码示例,以使得仅当显示键盘时才实现方案。为了进行该修改,在检查应用是否具有特权之后(即,在“if(application.is_privileged(BACKGROUND_SENSOR_DATA))”以及“break;”行对之后)添加下面的行:

if(is_keyboard_displayed()==false)

/*没有显示键盘,并因此我们可以传送传感器事件*/

break;

示例1-没有伪硬件传感器输出,被在后台中所限制(即,在操作系统可操作为不向进程通知检测到的触摸事件时,防止接收硬件传感器输出)。

示例2-伪硬件传感器输出与偶尔的实际硬件传感器输出相混合,被在后台中所限制(即,在操作系统可操作为不向进程通知检测到的触摸事件时)。

示例3-没有伪硬件传感器输出,由上一个触摸屏或键盘事件的时间(即,经由触摸事件窗口的定时)所限制。

示例4-伪硬件传感器输出,由上一个触摸屏事件的时间(即,经由触摸事件窗口的定时)所限制。

示例5-没有伪硬件传感器输出,受上一个触摸屏事件的时间(即,经由触摸事件窗口的定时)所限制,仅延迟至一些进程的传感器事件(即,控制采样速率)。

示例6-伪硬件传感器输出,受上一个触摸屏事件的时间(即,经由触摸事件窗口的定时)所限制,仅延迟至一些进程的传感器事件(即,控制采样速率)。

附录B

异步通信的伪代码示例

下面的伪代码示例被设计为传感器驱动程序中的函数。该伪代码示例基于下面的假设:传感器事件以每秒hardware_sensor_rate个事件的速率在固定的时间线上到达(即,新的硬件传感器将以每1/hardware_sensor_rate秒按时到达)。呈现了多个不同的选项,在每个选项之前放置指示针对该选项的特定设置的文本行。所有的时间都是以毫秒计。

在伪代码示例中,将被免除的进程称为特权应用。可以修改该伪代码示例,以使得仅当显示键盘时才实现方案。为了进行该修改,在检查应用是否具有特权之后(即,在“if(application.is_privileged(BACKGROUND_SENSOR_DATA))”以及“goto deliver_sample”;行对之后)添加下面的行:

if(is_keyboard_displayed()==false)

/*没有显示键盘,并因此我们可以传送传感器事件*/

break;

示例1-没有伪硬件传感器输出,被在后台中所限制(即,在操作系统可操作为不向进程通知检测到的触摸事件时,防止接收硬件传感器输出)。

示例2-伪硬件传感器输出与偶尔的实际硬件传感器输出相混合,被在后台中所限制(即,在操作系统可操作为不向进程通知检测到的触摸事件时)。

示例3-没有伪硬件传感器输出,由上一个触摸屏或键盘事件的时间(即,经由触摸事件窗口的定时)所限制。

示例4-伪硬件传感器输出,由上一个触摸屏事件的时间(即,经由触摸事件窗口的定时)所限制。

示例5-没有伪硬件传感器输出,受上一个触摸屏事件的时间(即,经由触摸事件窗口的定时)所限制,仅延迟至一些进程的传感器事件(即,控制采样速率)。

示例6-伪硬件传感器输出,受上一个触摸屏事件的时间(即,经由触摸事件窗口的定时)所限制,仅延迟至一些进程的传感器事件(即,控制采样速率)。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1