(一)理解智能机触摸屏生态系统

写在该系列之前

该系列为索尼关于智能手机触摸屏的文章,共四篇,对Android智能手机触摸体系做了系统并详细的说明。

注1:虽然做了翻译,但还是认为原文更准确,若可以,请大家移步原文:http://developer.sonymobile.com/tag/touch/

注2:若有错误,肯请大家指正,先行谢过。

 

(一)理解智能机触摸屏生态系统

理解智能机触摸屏生态系统

从今天开始,我们写出一系列文章来探索智能机触摸系统的内部机制和演变。通常,我们通常不会太关注 简单的触摸了一个屏幕直接导致该屏幕显示了什么 这一过程,现在它已经成为了一个基本设计被集成到智能手机中。要开始这一系列,Sony工程师,Magnum Johansson 和Alexander Hunt,解释了通常情况下智能手机的触摸系统是如何工作的。稍后细说。

当直接看到一部智能手机时,没有其他接口(interface)比触摸系统更容易或者更直观。但这种技术究竟是如何工作的呢?为了揭开 触摸系统这一课题 的秘密,我们找到了这个领域的Sony 移动手机专家——Magnus Johansson, 软件主系统工程师,和Alexander Hunt,硬件高级系统工程师(职位翻译是硬伤啊擦……)。在覆盖触摸系统这一系列文章的开始,将由他们介绍通用的触摸系统并解释每一个组件是如何工作的。

 

Master Systems Engineer Magnus Johansson and Senior Systems Engineer Alexander Hunt.

触屏生态系统

在此文中,我们就从一般角度来看看触屏生态系统。这仅仅是一个高度概述,但是它对于理解触摸性能这一课题是非常必要的。在此概述中,我们描述了涉及到的硬件组件以及它们是如何工作的,以及要用到的软件组件和它们是如何关联(组织)的。

 

触屏系统的软件&硬件组件

这个生态系统均开始于硬件触控面板(补充:红外触摸屏、电容触摸屏、电阻触摸屏)——当你开始和你的手机交互时你切实触摸到的屏幕。就如你在下图中所看到的,这个触控面板的固件发送 数据 到 主机触摸驱动程序。下一步,设备驱动 组装这些数据 并且 在操作系统事件队列中 发布触摸事件。从这儿,操作系统的事件管理框架 处理 这些事件 并且 将它们 广播给一个 接受应用程序。为了说明 该app 结合这些事件 做出的变化,我们称之为 它 更新 它的 UI,例如,通过滚动列表中的一个步骤。反过来,这将触发 图形框架(the graphics framework) 并且 通过显示驱动器,它将 推送(push)一个新的 帧(frame)去显示。

在下面的图片中,我们将更详细的描述这些组件。

 

Illustration of the touch ecosystem.(触摸生态系统的插图)

触控面板

基本上今天所有的智能机用的触摸技术叫做 投射式电容(project capacitive)。用这项技术,当手指触摸屏幕时,电场线被“投射”到触摸表面外。简而言之,手指从接收电极(Rx)“偷电”然后在发射电极(Tx)的场中这个失真被触摸集成电路检测到。电荷以一个叫做库伦(其代表符号为:C)的单位为单位测量。

 

Illustration of projected capacitive touch, in which the finger steals a charge from the receiving electrode (Rx) in the electrical field (Tx).

 

在每个节点处,该电容由触摸集成电路以几kHz的速率测量。如果触摸面板的扫描速度时60 Hz,触摸集成电路需要以最大值16,7ms的速度才能扫描所有的节点。如果刷新速率更快,测量则需要更快。智能手机的触摸面板通常速率介于60Hz和120Hz之间。

测试电容的信息 设置 在触控面板的接地设计(the ground design)规则中。影响触控面板速度的因素包括:

l  触控面板上点的数量。通常 触控集成电路有一定数量的 具有有限节点的 通道。

l  触控面板尺寸会告诉你 这个触控集成电路需要有多少通道(channels)。这也连接(is connected to)到触摸传感器的网格间距。每一个电极到另一个应该如何关闭。推荐的手指操作是电极间4-6mm。如果需要支持 电子笔,则需要折衷 网格间距、笔尖大小和可用信号。

l  触控面板电极的设计。一个触摸传感器是由银线来制作的,再往下的部分则是用户不能看见并且在可见区域的透明电极(A touch sensor is made by a silver line tracing under the parts the user cannot see and a transparent electrode in the visible area)。这个透明电极通常由一种叫做铟锡氧化物(简称:ITO)的材料来制作。ITO的电阻取决于厚度和纯度,当ITO层更厚或者更纯,阻力就降低。ITO层更厚,则透明度更低、传感器模式更容易被识别。当阻力增大,那么面板的RC常量()也会增加,并且扫描速率也会受影响。

一旦触控面板被设计好,并且一定的扫描速率被决定,那么所有已完成的测量需要处理并发送给主机。触控集成电路从触控面板取到所有测量值并将它们转换为 x-position, y-position和其他参数。当然,它还有降噪的任务。在触控面板周围有很多组件注入(inject)噪声到系统,例如:显示器、充电电源、无线电发射器等。需要激活的减少噪声的过滤器越多,获取传给主机的参数的时间越长【注:The more filters that is needed to be active to reduce noise the longer it takes to get the parameters to the host】。

触控面板上手指的数量也会影响触控集成电路需要多少个计算器来计算,因此也可能影响到扫描速率。

 

主机触控驱动

主机触控驱动从触摸硬件的固件接收数据。该驱动将这些数据组装成触摸事件并公开给操作系统的输入事件队列。由于Android是基于Linux的操作系统,如Xperia系列,这些触摸数据可用于位于“/dev/input/eventX”(此处,“X”是一个代表特定设备的数字)路径下的任何用户空间程序。这些设备输出作为文件系统中的文件被暴露,并且它们可以通过由系统提供的通用文件API访问和读取

 

事件管理和Choreographer

对我们来说,高水准操作系统的事件管理框架是android的一部分。该框架从事件队列中读取触摸事件。该事件管理框架能用这些事件做许多事情。例如:它能尝试监测手势。如果原始数据驳杂或者无规律它可能尝试就位置和时间而言改进这些事件数据。它能够尝试同步这些事件去显示垂直同步信号(vertical synchronization ---VSYNC)为了给应用程序更可能多的时间从而不要掉帧。然而,其主要任务是交付这些事件给正确的目标。这个目标通常是一个当前前景和焦点应用程序的窗口或者view。

The Choreographer在Android 4.3(Jelly Bean)中被介绍,它是Android 事件管理框架的一部分。它的意义是提高Android的平滑度,因为与其他操作系统对比,平滑度问题已经被定义为一个很严重的问题。Choreographer是一个实例,它提供了同步 VSYNC 信号的目的,VSYNC信号由移动设备多媒体子系统结合从触摸输入设备接收数据的输入事件形成的。

VSYNC 是 vertical synchronizing(场同步线)的首字母缩写 并且 它是一个来自显示系统的信号,用来告知图形系统它准备一次新的渲染帧。Android重用该信号分配触摸事件。

当 Choreographer 接收到一个 VSYNC 信号通知,它将调用事件分配器给事件目标。这种机制的理由是让 应用程序有足够的时间能够在下一帧前处理和绘制。

 

应用程序

此时,触摸事件被当前活动的app接收到。该app按照此触摸事件活动并且很可能做一些处理和画一些东西从而更新用户接口(UI)。应用程序如何持有触摸事件的最基本方式是通过按照它们接收到的触摸事件。这种方法将按照以下几个通用进程:

 

(1)在一个事件处理器中接收事件,例如 Android中一个View或Activity中的onTouchEvent(...) 。

(2)更新内部状态并且执行应用程序特定逻辑。

(3)绘图表面失效。

(4)在绘图表面上绘制用户接口模型。

那,app需要在 比两次事件间隔(16.67ms)时间更少的时间内做完所有的事情。如果没有,app将掉帧并且频繁卡顿。

 

图形合成(此处需修改)

当一个应用程序已表面失效之后再绘制,在图形框架中的图形合成将被触发。表面失效意味着它需要重新被绘制。合成意味着所有可见内容表面将被合成为一张图片随后将发送到显存。

 

依赖于系统设置,层的数量等因素,合成可以由软件或者硬件方式实现。在我们case中,这将有“SurfaceFlinger”完成,它 (SurfaceFlinger)是Android软件图像合成器,或者通过平台中的硬件合成器。自然地,如果操作系统或者硬件平台改变了这些做实际工作 的实例将随着时间而改变但是这一原则将可能再留一会儿。

 

合成最终步骤 通过硬件图像合成(在高通平台上叫做 Mobile Display Processor(MDP) )在内核级完成。这涉及到在 由SurfaceFlinger提供的帧上的附加层合成 并且它也涉及到旋转和缩放。

 

主机显示驱动

当一个最终合成图像完成,主机显示驱动将确保 将当前正确合成的图像数据发送到显示器。这些数据通过 MIPI DSI 接口被传输到显示器。


显示器

显示器是触控生态系统中的最终组件。有许多不同类型的显示器被用于智能手机和平板电脑。最常用的一些则是液晶显示屏(Liquid crystal display LCD)和有机电致发光二极管(organic light emitting diodes OLED)【注1】

 

显示器通常有一个60Hz的帧率。从显示器中的刷新开始于一个角,之后信息将一行一行的被传输直到显示器全部被刷新。

Illustration of the scan direction of a display.

一个显示器的扫描方向插图


有 两种不同的显示驱动集成电路类型,有内部RAM和无内部RAM。不同点是当你有内部RAM,主机只需要发送一次数据,每一次帧有新内容并且需要更新时。另 一个好处是只有被更改的部分需要被访问。这将彻底地减少传输数据的数量在显示接口上。坏处是一个额外的缓存存在于系统中会增加额外的延时。在RAM- less的状况下,只要显示器是激活的,主机需要更新显示器的全部帧。这是最快、最便宜和最容易的实现,但是它很耗电。在Xperia设备中,我们使用了 两种显示驱动,依赖与显示尺寸,分辨率和成本。

另外,有两种不同类型的LCD技术,最通用是 in-plane switching(IPS),vertical alignment(VA), twisted nematic(TN)。他们在liquid crystal(LC)怎样排布有着完全不同的结构,依赖于您喜欢在您的产品中加强什么特征。例子之一折中方案是 OEMs需要涉及LC(lipuid chromatography)切换时间。意思是,时间带动LC从一个位置移动到另一个位置。TN-LCD是最快的技术按照IPS和最新的VA。看看最近 最新的智能手机,主要使用 有IPS的LCD或者OLED并且那是因为IPS的光学特性和OLED是当前最好的折中方式。

 

OLED显示器,是自发光的显示技术,没有相同的问题在切换时间时当此技术很像切换灯光开和关。

 

***

我们希望此文给你一些在触摸屏幕系统和它后面的组件里的一般概念。在我们下一篇文章中,我们将看看在相同的系统上更详细的解释时间实际都被花在哪儿了 和 花了多少。所以请耐心等待 Developer World Mobile!

 

更多信息:

注1:OLED正名是Organic Light Emitting Diodes有机发光二极管),拥有可屈曲的特性,具发展成高效能及大面积光源产品的潜力,在欧洲已开始广泛使用。

posted @ 2015-06-15 10:43  Binary-Stream  阅读(714)  评论(0编辑  收藏  举报