觸摸我的觸摸屏?xí)r會發(fā)生什么?
本文將探討跟蹤觸摸所涉及的所有內(nèi)容,從電容感應(yīng)的物理特性到屏幕上的最終動作。我們描述了如何檢測手指以及確定手指位置的方法。我們將手指進(jìn)一步插入手機(jī)的軟件堆棧,看看它是如何到達(dá)正確的應(yīng)用程序的。揭開捏和縮放等手勢的神秘面紗。
如何檢測到觸摸?
幾乎所有的智能手機(jī)觸摸屏都會對手指的電容做出反應(yīng)。觸摸屏包含一系列傳感器,可檢測手指引起的電容變化。當(dāng)您的手指觸摸屏幕時,會影響每個傳感器的自電容以及它們之間的互電容。大多數(shù)智能手機(jī)感應(yīng)互電容感應(yīng)而不是自電容。由于互電容是任何給定傳感器對之間的相互作用,因此它可用于收集關(guān)于屏幕上每個位置的信息(X * Y點(diǎn))。自電容僅能夠檢測每個傳感器的反應(yīng)而不是每個點(diǎn)(X + Y樣本)。
圖1:互電容基本原理。
電容式傳感器包含多個層:頂層玻璃或塑料,然后是光學(xué)透明粘合劑(OCA)層,然后是觸摸傳感器,然后是LCD。觸摸傳感器是傳感器網(wǎng)格,通常為約5mm×5mm。這些傳感器使用氧化銦錫(ITO)制造。 ITO具有一些有趣的特性,使其成為觸摸屏構(gòu)造的理想材料。它的透明度超過90%,但它也具有導(dǎo)電性。一些設(shè)計(jì)使用菱形圖案,這在視覺上令人愉悅,因?yàn)樗慌cLCD圖案對齊。其他人則使用更簡單的“條紋和條紋”圖案。如果以正確的角度檢查設(shè)備并獲得良好的照明,您可以在LCD關(guān)閉的情況下看到ITO傳感器線。
感應(yīng)互電容與感應(yīng)自電容根本不同。為了感測自電容,我們通常測量包含傳感器的RC電路的時間常數(shù)。感測互電容涉及測量X和Y傳感器之間的相互作用。檢測在每條X線和每條Y線上驅(qū)動的信號以檢測傳感器之間的耦合水平。有趣的是,手指觸摸會減少互電容耦合,同時手指觸摸會增加自電容值。
圖2:互電容感應(yīng)響應(yīng)。
在任何一種方法中,僅僅測量電容是不夠的。系統(tǒng)必須對電容的變化做出反應(yīng),而不是原始電容。為此,系統(tǒng)會為每個傳感器維護(hù)基線值。該基線值是信號的長期平均值,允許由溫度變化和其他因素引起的信號變化。構(gòu)建觸摸屏系統(tǒng)的挑戰(zhàn)之一是建立適當(dāng)?shù)幕€。例如,系統(tǒng)必須能夠用手指在屏幕上正確啟動。系統(tǒng)還必須能夠從屏幕上的水或手掌開始。
一旦從感應(yīng)電容中減去基線值,我們就會得到一個代表觸摸的信號值數(shù)組,如下圖所示:
圖3:確定手指基于原始電容數(shù)據(jù)的位置。
使用各種方法根據(jù)此信息確定手指位置。最簡單的一個是質(zhì)心(質(zhì)心)計(jì)算,它是一維或二維傳感器值的加權(quán)平均值。使用1-D質(zhì)心,上面的X坐標(biāo)是(5 * 1 + 15 * 2 + 25 * 3 + 10 * 4)/(5 + 15 + 25 + 10)= 150/55 = 2.73。然后我們縮放此位置以匹配LCD分辨率。如果ITO傳感器圖案延伸超出LCD的側(cè)面,則也會對其進(jìn)行一些轉(zhuǎn)換。
邊緣使手指位置問題復(fù)雜化。如果面板在每個列處結(jié)束,請考慮上面顯示的數(shù)組。上面顯示的簡單質(zhì)心將開始“拉”到右邊,因?yàn)樽筮叺男g(shù)語會下降。為了解決這個問題,我們必須使用特殊的邊緣處理技術(shù)來檢查剩余信號的形狀,并估計(jì)手指離開屏幕的部分。
一旦有效的觸摸信號出現(xiàn)并且觸摸的X/Y坐標(biāo)已知,就可以將數(shù)據(jù)送到主機(jī)CPU進(jìn)行處理了。嵌入式觸摸屏設(shè)備使用古老的I2C接口或SPI進(jìn)行通信。較大的觸摸屏通常使用USB接口,因?yàn)閃indows,MacOS和Linux都通過USB內(nèi)置了對HID(人機(jī)接口設(shè)備)的支持。
雖然采用了幾種不同的接口,但OS驅(qū)動程序最終會對每種接口進(jìn)行類似的工作。我們將在我們的示例中討論Android驅(qū)動程序。由于Android和MeeGo都是在Linux上構(gòu)建的,所以三者都使用類似的驅(qū)動程序。
觸摸屏驅(qū)動程序的中斷觸發(fā)調(diào)度工作線程的中斷服務(wù)程序(ISR)。在ISR中沒有做任何工作來維持中斷延遲并防止優(yōu)先級反轉(zhuǎn)。當(dāng)OS調(diào)用工作線程時,它啟動通信事務(wù)以從設(shè)備讀取數(shù)據(jù)并進(jìn)入休眠狀態(tài)。通信事務(wù)完成后,主機(jī)驅(qū)動程序?qū)⒕哂欣^續(xù)執(zhí)行所需的數(shù)據(jù)。
主機(jī)驅(qū)動程序?qū)⒃O(shè)備制造商使用的專有數(shù)據(jù)格式轉(zhuǎn)換為標(biāo)準(zhǔn)格式。在Linux中,驅(qū)動程序使用一系列子例程調(diào)用填充事件的字段,然后通過最終調(diào)用發(fā)送事件。例如,創(chuàng)建單觸式Linux輸入事件如下所示:
input_report_abs(ts-》 input,ABS_X,t-》 st_x1);//設(shè)置X位置
input_report_abs(ts-》 input,ABS_Y,t-》 st_y1);//設(shè)置Y位置
input_report_abs(ts-》 input,ABS_PRESSURE,t-》 st_z1);//設(shè)置壓力
input_report_key(ts-》 input,BTN_TOUCH,CY_TCH);//按下手指
input_report_abs(ts-》 input,ABS_TOOL_WIDTH,t-》 tool_width);//設(shè)置寬度
input_sync(ts-》 input);//發(fā)送事件
此觸摸事件然后進(jìn)入操作系統(tǒng)。 Android將事件的歷史記錄保存在手勢處理緩沖區(qū)中,并將事件傳遞給View類。多個觸摸屏設(shè)備(如賽普拉斯TrueTouch?產(chǎn)品支持硬件手勢處理。硬件手勢處理減輕了主機(jī)操作系統(tǒng)的手勢處理負(fù)擔(dān),并且在許多情況下,它消除了所有觸摸數(shù)據(jù)的處理,直到看到手勢。例如,如果你進(jìn)入你的照片瀏覽器,主機(jī)不必處理數(shù)十或數(shù)百個觸摸數(shù)據(jù)包就可以看到你想要輕彈到下一張照片。在實(shí)際翻到下一張照片之前不會發(fā)生中斷。
圖4:簡單手勢過程的示例。
Android的View類確定觸摸發(fā)生的哪個應(yīng)用程序處于活動狀態(tài)。顯示在屏幕上的每個應(yīng)用程序至少有一個View類。此類包含處理用戶輸入的方法,包括OnTouchListener,它傳遞從輸入驅(qū)動程序接收的信息以及MotionEvent中的其他信息。如果您習(xí)慣于編寫接受鼠標(biāo)事件的Windows程序,您可能會對各種鼠標(biāo)事件和觸摸界面之間的差異感到驚訝。 MotionEvent包括您通常期望的類似WM_LBUTTONDOWN的方法,例如GetX和GetY,以及前面的觸摸位置和手指在面板上的時間。
一旦應(yīng)用程序看到事件,應(yīng)用程序就會對觸摸作出反應(yīng)。這通常由小部件而不是應(yīng)用程序本身完成。 Android的小部件包括簡單的項(xiàng)目,如按鈕,復(fù)雜的界面,如日期選擇器和帶取消按鈕的進(jìn)度條。或者,應(yīng)用程序可以直接使用觸摸。繪圖應(yīng)用程序使用兩種類型的混合,使用繪圖區(qū)域中的直接觸摸輸入和菜單和按鈕的小部件。
Windows Touch處理和Android之間的一個區(qū)別是手勢解釋。 Android提供了豐富的手勢創(chuàng)建工具庫,但不提供任何內(nèi)置手勢。每個設(shè)計(jì)師都可以自由地創(chuàng)建自己的手勢,包括手寫等復(fù)雜的手勢。這種方法已經(jīng)啟用了字符識別聯(lián)系人搜索等應(yīng)用程序,但這意味著相同的操作可能無法在兩個Android平臺上執(zhí)行相同的操作。 Windows提供了一組固定的易于理解的手勢,具有操作系統(tǒng)級別的支持:GID_PAN,GID_ZOOM,GID_ROTATE,GID_PRESSANDTAP和GID_TWOFINGERTAP。這些操作始終會在每個應(yīng)用程序中執(zhí)行相同的操作,從而使用戶能夠快速使用新應(yīng)用程序。每種方法都有一些優(yōu)勢。
從觸摸到手勢的路徑在技術(shù)上具有挑戰(zhàn)性,涉及許多部分的相互作用。從材料選擇到制造再到電子產(chǎn)品,一切都在觸摸感應(yīng)中起作用。一旦觸摸被數(shù)字化,它仍然必須被定位,傳送給主機(jī)并被解釋。現(xiàn)在已經(jīng)滿足了這些挑戰(zhàn),軟件開發(fā)人員可以在其上構(gòu)建令人興奮的應(yīng)用程序。您的下一個應(yīng)用程序?qū)⑷绾问褂眠@些新的觸摸功能?
-
傳感器
+關(guān)注
關(guān)注
2562文章
52504瀏覽量
763283 -
智能手機(jī)
+關(guān)注
關(guān)注
66文章
18609瀏覽量
182940 -
觸摸
+關(guān)注
關(guān)注
8文章
199瀏覽量
64791
發(fā)布評論請先 登錄
借助音頻DSP平臺 超低功耗非觸摸手勢控制有譜
Seeed推出3D手勢識別產(chǎn)品 采用Microchip電近場感應(yīng)技術(shù)
AD7879控制器支持在阻性觸摸屏上實(shí)現(xiàn)手勢識別
觸摸/距離傳感器能用于檢測手勢嗎?
汽車中的多點(diǎn)觸摸應(yīng)用
基于AD7879的兩點(diǎn)觸摸手勢識別系統(tǒng)的實(shí)現(xiàn)
TrueTouch方案的N-02B手機(jī)實(shí)現(xiàn)多點(diǎn)觸摸手勢識別和
如何在Flash Lite中偵測觸摸手勢
從觸摸到呼叫:跟蹤觸摸手勢的路徑

追蹤觸摸手勢的路徑從觸摸到呼叫的設(shè)計(jì)應(yīng)用

觸摸顯示屏手勢輸入字符方法探究

蘋果耳機(jī)新專利「耳機(jī)旋轉(zhuǎn)檢測」,根據(jù)觸摸手勢實(shí)現(xiàn)操控

電容式觸摸手勢軟件和調(diào)整應(yīng)用說明

評論