屏幕手寫跟隨性的優(yōu)化方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及安卓系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種屏幕手寫跟隨性的優(yōu)化方法及系統(tǒng)。
【背景技術(shù)】
[0002]近年來,平板電腦不斷從個人娛樂終端向教育、商務(wù)等行業(yè)領(lǐng)域滲透。屏幕手寫技術(shù)在行業(yè)平板中得到了廣泛應(yīng)用。其中,屏幕手寫延遲性是影響輸入體驗的關(guān)鍵指標(biāo)。
[0003]據(jù)統(tǒng)計,安卓系統(tǒng)上支持屏幕手寫的應(yīng)用,從觸屏?xí)鴮懙斤@示出筆跡,其延遲普遍達到10ms左右,且隨著書寫內(nèi)容的增加,畫面復(fù)雜性提升,系統(tǒng)每一幀處理的數(shù)據(jù)量增加,筆跡延遲性也隨之明顯增長,導(dǎo)致在書寫時感到筆跡遲滯,帶來較差的用戶體驗。
[0004]現(xiàn)有技術(shù)中公開了一種“可書寫式電磁筆”見公開號為:CN204595780U,公開日為:2015-08-26的中國專利;所述可書寫式電磁筆包括筆芯、筆座倉、電路板和導(dǎo)電橡膠件,其中所述筆芯為插嵌收容到所述筆座倉內(nèi)部的可書寫式筆芯,且其靠近筆頭位置套設(shè)有磁性元件;所述磁性元件的外圍繞設(shè)有線圈;所述導(dǎo)電橡膠件設(shè)置在所述筆座倉和所述電路板之間,所述線圈通過所述導(dǎo)電橡膠件與所述電路板電性連接。
[0005]現(xiàn)有技術(shù)中公開了一種“抗干擾的電磁手寫裝置及電磁筆位置識別方法”見公開號為:CN102479020A,公開日為:2012-05-30的中國專利;通過天線板接收來自電磁筆的電磁信號,并將所述電磁信號發(fā)送給控制板;控制板根據(jù)所接收的電磁信號控制顯示面板的工作狀態(tài),并根據(jù)所述顯示面板的工作狀態(tài)信息判斷是否對電磁筆位置進行識別。采用該發(fā)明所述的方案,能夠有效避免顯示面板刷新時的噪聲干擾信號對電磁筆的影響,防止電磁筆的誤動作。
[0006]現(xiàn)有技術(shù)中還公開了一種“電磁屏間筆跡數(shù)據(jù)的處理方法及電磁屏系統(tǒng)”見公開號為:CN103823605A,公開日為:2014-05-28的中國專利;該方法包括如下步驟:第一屏幕接收并顯示被劃下的第一筆跡,同時在接收第一筆跡的第一設(shè)定個數(shù)的點的第一筆跡信息數(shù)據(jù)后,將第一筆跡信息數(shù)據(jù)直接或者間接發(fā)送到第二屏幕;第二屏幕接收并解析第一筆跡信息數(shù)據(jù),在第二屏幕上的對應(yīng)位置顯示第一筆跡;第二屏幕接收并顯示被劃下的第二筆跡,同時在接收第二筆跡的第二設(shè)定個數(shù)的點的第二筆跡信息數(shù)據(jù)后,將第二筆跡信息數(shù)據(jù)直接或者間接發(fā)送到第一屏幕;第一屏幕接收并解析第二筆跡信息數(shù)據(jù),在第一屏幕上的對應(yīng)位置顯示第二筆跡。該發(fā)明可以降低第一屏幕與第二屏幕的筆跡差異較大的幾率。
[0007]上述專利是涉及電磁筆硬件和軟件方面共同的創(chuàng)新。本專利申請是基于android系統(tǒng)對電磁筆的書寫繪制效率優(yōu)化,在瑞芯芯片及系統(tǒng)平臺實現(xiàn),對原生android系統(tǒng)的繪制效率有大幅提升,具有保護意義。
【發(fā)明內(nèi)容】
[0008]本發(fā)明要解決的技術(shù)問題之一,在于提供一種屏幕手寫跟隨性的優(yōu)化系統(tǒng),改善了 android系統(tǒng)屏幕輸入延遲狀況,繪制速度不會隨著內(nèi)容的復(fù)雜度提升而降低。
[0009]本發(fā)明問題之一是這樣實現(xiàn)的:一種屏幕手寫跟隨性的優(yōu)化系統(tǒng),所述優(yōu)化系統(tǒng)包括輸入優(yōu)化模塊和繪制優(yōu)化模塊;
[0010]所述輸入優(yōu)化模塊,用于優(yōu)化安卓系統(tǒng)輸入事件讀取、分發(fā)的繁瑣處理流程,即為屏幕建立一個單獨的處理線程,通過單獨的處理線程直接處理安卓系統(tǒng)的驅(qū)動上報的屏幕坐標(biāo)事件;
[0011]所述繪制優(yōu)化模塊,用于優(yōu)化安卓系統(tǒng)應(yīng)用繪制時底層內(nèi)存分配、數(shù)據(jù)合成及顯示處理的流程,即將安卓系統(tǒng)的應(yīng)用層的繪制處理迀移到安卓系統(tǒng)本地層實現(xiàn),申請單獨的圖形緩沖區(qū)作為畫布,將畫布放到硬件幀緩沖區(qū),然后通過畫布將接收到的坐標(biāo)數(shù)據(jù)通過繪圖引擎SKIA繪制顯示到屏幕。
[0012]進一步的,所述輸入優(yōu)化模塊進一步的實現(xiàn)方式為:對屏幕輸入事件單獨建立一個循環(huán)處理線程,通過循環(huán)處理線程直接讀取屏幕上報的坐標(biāo)事件,向安卓系統(tǒng)應(yīng)用層派發(fā),無需經(jīng)過安卓系統(tǒng)的轉(zhuǎn)換、處理、同步的過程,從而節(jié)省了輸入端的時間;其中,坐標(biāo)事件包含驅(qū)動上報的點的坐標(biāo)及屏幕壓感信息。
[0013]進一步的,所述繪制優(yōu)化模塊進一步的實現(xiàn)方式為:將安卓系統(tǒng)的應(yīng)用層的繪制處理迀移到安卓系統(tǒng)本地層來實現(xiàn),則事件的接收和繪制動作,不受限于框架Choreographer,能做到即時處理,來減少等待安卓系統(tǒng)輸入/繪制調(diào)度信號的時間;
[0014]將安卓系統(tǒng)的應(yīng)用層的繪制處理迀移到安卓系統(tǒng)本地層來實現(xiàn),安卓系統(tǒng)的界面繪制不再依賴系統(tǒng)框架,即不需要每一幀進行測量、布局的操作,繪制內(nèi)容能直接顯示到屏幕,來減少每一幀數(shù)據(jù)計算耗時;
[0015]申請單獨的圖形緩沖區(qū)作為畫布,使得安卓系統(tǒng)界面繪制不再每次繪制都重新申請圖形緩沖區(qū),也不需要多緩沖區(qū)的切換,由于在安卓系統(tǒng)本地層申請一塊緩存初始化為畫布,并映射到硬件幀緩沖區(qū),繪制內(nèi)容能通過本地層繪制接口直接寫入到硬件幀緩沖區(qū)中,并顯示出來。
[0016]進一步的,所述屏幕包括電磁屏或者電容屏。
[0017]本發(fā)明要解決的技術(shù)問題之二,在于提供一種屏幕手寫跟隨性的優(yōu)化方法,改善了 android系統(tǒng)屏幕輸入延遲狀況,繪制速度不會隨著內(nèi)容的復(fù)雜度提升而降低。
[0018]本發(fā)明問題之二是這樣實現(xiàn)的:一種屏幕手寫跟隨性的優(yōu)化方法,其特征在于:包括不分先后順序的輸入的優(yōu)化處理和繪制的優(yōu)化處理;
[0019]所述輸入的優(yōu)化處理為:優(yōu)化安卓系統(tǒng)輸入事件讀取、分發(fā)的繁瑣處理流程,即為屏幕建立一個單獨的處理線程,通過單獨的處理線程直接處理安卓系統(tǒng)的驅(qū)動上報的屏幕坐標(biāo)事件;
[0020]所述繪制的優(yōu)化處理為:優(yōu)化安卓系統(tǒng)應(yīng)用繪制時底層內(nèi)存分配、數(shù)據(jù)合成及顯示處理的流程,即將安卓系統(tǒng)的應(yīng)用層的繪制處理迀移到安卓系統(tǒng)本地層來實現(xiàn),申請單獨的圖形緩沖區(qū)作為畫布,將畫布放到硬件幀緩沖區(qū),然后通過畫布將接收到的坐標(biāo)數(shù)據(jù)通過繪圖引擎SKIA繪制顯示到屏幕。
[0021]進一步的,所述輸入的優(yōu)化處理進一步為:對屏幕輸入事件單獨建立一個循環(huán)處理線程,通過循環(huán)處理線程直接讀取屏幕上報的坐標(biāo)事件,向安卓系統(tǒng)應(yīng)用層派發(fā),無需經(jīng)過安卓系統(tǒng)的轉(zhuǎn)換、處理、同步的過程,從而節(jié)省了輸入端的時間;其中,坐標(biāo)事件包含驅(qū)動上報的點的坐標(biāo)及屏幕壓感信息。
[0022]進一步的,所述繪制的優(yōu)化處理進一步為:將安卓系統(tǒng)的應(yīng)用層的繪制處理迀移到安卓系統(tǒng)本地層來實現(xiàn),則事件的接收和繪制動作,不受限于框架Choreographer,能做到即時處理,來減少等待安卓系統(tǒng)輸入/繪制調(diào)度信號的時間;
[0023]將安卓系統(tǒng)的應(yīng)用層的繪制處理迀移到安卓系統(tǒng)本地層來實現(xiàn),安卓系統(tǒng)的界面繪制不再依賴系統(tǒng)框架,即不需要每一幀進行測量、布局的操作,繪制內(nèi)容能直接顯示到屏幕,來減少每一幀數(shù)據(jù)計算耗時;
[0024]申請單獨的圖形緩沖區(qū)作為畫布,使得安卓系統(tǒng)界面繪制不再每次繪制都重新申請圖形緩沖區(qū),也不需要多緩沖區(qū)的切換,由于在安卓系統(tǒng)本地層申請一塊緩存初始化為畫布,并映射到硬件幀緩沖區(qū),繪制內(nèi)容能通過本地層繪制接口直接寫入到硬件幀緩沖區(qū)中,并顯示出來。
[0025]進一步的,所述屏幕包括電磁屏或者電容屏等。
[0026]本發(fā)明具有如下優(yōu)點:本發(fā)明通過輸入的優(yōu)化處理和繪制的優(yōu)化處理,有效解決了安卓系統(tǒng)屏幕手寫輸入延遲的問題;有效改善安卓系統(tǒng)屏幕手寫繪制效率低下的問題。采用本發(fā)明后,明顯的改善了android系統(tǒng)屏幕輸入延遲狀況,將原有10ms延時縮短到40ms之內(nèi);采用本發(fā)明后,繪制速度不會隨著內(nèi)容的復(fù)雜度提升而降低。
【附圖說明】
[0027]圖1為本發(fā)明的系統(tǒng)框架圖。
[0028]圖2為本發(fā)明的流程示意圖。
【具體實施方式】
[0029]請參閱圖1所示,本發(fā)明的一種屏幕手寫跟隨性的優(yōu)化系統(tǒng),所述優(yōu)化系統(tǒng)包括輸入優(yōu)化模塊和繪制優(yōu)化模塊;所述屏幕包括電磁屏或者電容屏等;
[0030]現(xiàn)有安卓系統(tǒng)的輸入框架能夠適配處理多種不同類型的輸入input事件。其基本流程是,系統(tǒng)啟動時會初始化input相關(guān)的服務(wù),其中會創(chuàng)建EventHub對象及InputReader、InputDispatcher線程;當(dāng)有輸入事件產(chǎn)生,InputReader線程會通過EventHub對象讀取驅(qū)動上報的事件,并進行預(yù)處理(例如,判斷事件類型,判斷按鍵是長按,短按,等等),然后交給InputDispatcher線程處理;InputDispatcher線程會進行必要的判斷,如事件是否可被系統(tǒng)攔截,若不可攔截,則需要找到應(yīng)用目標(biāo)窗口,然后將事件event投放到等待隊列中,等待應(yīng)用窗口的處理。當(dāng)有事件到來,應(yīng)用UI線程會被喚醒,并開始事件處理流程,經(jīng)過若干階段后,事件完成處理,InputDispatcher線程將其從等待隊列中移除。
[0031]上述處理流程,是針對多種類型輸入事件的統(tǒng)一處理框架,處理過程會存在一些延時。本發(fā)明優(yōu)化后的處理流程,通過輸入優(yōu)化模塊進行優(yōu)化;
[0032]所述輸入優(yōu)化模塊,用于優(yōu)化安卓系統(tǒng)輸入事件讀取、分發(fā)的繁瑣處理流程,即為屏幕建立一個單獨的處理線程,通過單獨的處理線程直接處理安卓系統(tǒng)的驅(qū)動上報的屏幕坐標(biāo)事件;避免了原生安卓系統(tǒng)輸入的繁瑣操作。
[0033]現(xiàn)有的安卓系統(tǒng)應(yīng)用繪制流程,在如下三個地方會引入延時:
[0034](I),應(yīng)用層收到的輸入事件和系統(tǒng)執(zhí)行繪制動作,是由框架的Choreographer來按照vsync節(jié)奏統(tǒng)一調(diào)度執(zhí)行的。
[0035](2),應(yīng)用收到輸入事件后觸發(fā)繪制,每一幀重繪需要重新進行測量、布局;即便是界面局部重繪,也需要系統(tǒng)對臟區(qū)大小進行計算。隨著書寫內(nèi)容的增加,每一幀的數(shù)據(jù)計算的耗時會隨之增長,繪制時間也會增長。
[0036](3),系統(tǒng)底層采用多緩沖區(qū)機制,即每一時刻只有一個緩存buffer內(nèi)容顯示在屏幕上,而后臺緩存buffer需要與front buffer交換,才會顯示出來。應(yīng)用層每一次繪制(全局或局部重繪)都需要1ckCanvas鎖定一塊buffer,繪制之后,再執(zhí)行unlockAndPost完成顯示,其本質(zhì)是不斷從顯示隊列中申請空閑緩沖區(qū),完成繪制后,再渲染到硬件緩沖區(qū)。前后緩沖區(qū)的切換和緩沖區(qū)的申請、釋放,也需要一定的時間消耗。