国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方法

      文檔序號(hào):8412399閱讀:539來源:國知局
      一種Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方法
      【技術(shù)領(lǐng)域】
      [0001] 本發(fā)明涉及android操作系統(tǒng)的顯示框架。具體來說,該發(fā)明是基于android的 顯示框架,提供一種可以動(dòng)態(tài)切換android軟件顯示(使用CPU進(jìn)行繪制)和硬件顯示(使用 GPU進(jìn)行繪制)的方法。
      【背景技術(shù)】
      [0002] 從Android 3. 0開始,Android 2D的繪制流程就設(shè)計(jì)為支持硬件加速。有了該硬 件加速,應(yīng)用程序在繪制界面所進(jìn)行的繪制操作都會(huì)使用硬件去渲染繪制,這樣極大的優(yōu) 化了顯示速度和用戶體驗(yàn)。
      [0003] 硬件繪制特點(diǎn)是繪制速度快,界面流暢,用戶體驗(yàn)好,但是消耗硬件資源,導(dǎo)致一 些應(yīng)用在低配置的設(shè)備上無法運(yùn)行,另外硬件繪制無法滿足所有的繪制方法(依賴于硬件 提供的功能),導(dǎo)致部分應(yīng)用在一些硬件能力差的機(jī)器上顯示異常,甚至不能運(yùn)行。
      [0004] 軟件繪制的特點(diǎn)是繪制速度慢,界面不順暢,但是對(duì)硬件的依賴較小,另外軟件繪 制的準(zhǔn)確度和精確度高,繪制方法種類豐富,所以適應(yīng)性比硬件要強(qiáng)。
      [0005] Android系統(tǒng)的繪圖原始框架如圖1和圖2描述。主要包括如下幾個(gè)部分: I) PO內(nèi)核顯示驅(qū)動(dòng)。在Iinux內(nèi)核中就是指framebuffer驅(qū)動(dòng)。
      [0006] 2)P1應(yīng)用程序圖層合成服務(wù)SurfaceFlinger。這個(gè)服務(wù)是android的native層 服務(wù),主要的功能就是接受來自客戶端的圖層修改指令,并且對(duì)當(dāng)前系統(tǒng)中所有的應(yīng)用程 序圖層進(jìn)行合成,最終將合成的結(jié)果輸送給Iinux顯示驅(qū)動(dòng)顯示出來。
      [0007] 3)P2窗口顯示控制Surface??梢酝ㄟ^該接口來控制一個(gè)圖層窗口的屬性(大小, 位置等),該類負(fù)責(zé)橋接P3和Pl。
      [0008] 4) P3 窗口管理服務(wù) WindowManagerService (WMS)。該服務(wù)是 android 的核心服 務(wù)之一,主要負(fù)責(zé)接受用戶輸入事件然后通知給相應(yīng)的應(yīng)用程序,同時(shí)也負(fù)責(zé)所有的應(yīng)用 程序窗口顯示排序策略(Z order),應(yīng)用程序窗口屬性的(大小,位置等)的調(diào)整等。
      [0009] 5) P4視圖樹管理ViewRoot。P4的主要繪制流程請(qǐng)見圖2。
      [0010] -般來說一個(gè)應(yīng)用程序是一群視圖(View)的合成體,ViewRoot管理了這個(gè)應(yīng)用 的所有視圖,每當(dāng)有更新(大小發(fā)生變化,位置發(fā)生變化等),ViewRoot負(fù)責(zé)遍歷該應(yīng)用的所 有視圖,從而進(jìn)行重新布局,重新繪制。
      [0011] 6)P5繪制操作接口 Canvas。Canvas是Android為應(yīng)用程序繪圖抽象的一個(gè)接口, 應(yīng)用程序可以使用該接口進(jìn)行各種繪圖操作(畫點(diǎn),畫線等)。
      [0012] 7) P6圖形繪制庫。圖形繪制庫是Canvas的后端實(shí)現(xiàn)。在android平臺(tái)上分為 skia和hwui,其中skia是純粹用CPU操作的軟件實(shí)現(xiàn)庫,hwui是封裝了 openGL的硬件實(shí) 現(xiàn)庫,最終會(huì)使用硬件GPU資源。
      [0013] 當(dāng)應(yīng)用程序的初始化圖形界面的時(shí)候,P4會(huì)根據(jù)當(dāng)前應(yīng)用程序是否含有硬件加速 的標(biāo)志位(由于該標(biāo)志位在Android3. 0之后才支持,所以使用android3. 0之前的SDK編譯 的應(yīng)用程序是不含有該標(biāo)志位的)來決定使用的圖形繪制庫是軟件還是硬件,一旦決定了 以后,就立即申請(qǐng)相應(yīng)的資源,后續(xù)不能更改。由此可見,一個(gè)應(yīng)用程序在Android平臺(tái)上 顯示方式,完全由該應(yīng)用程序的版本決定,系統(tǒng)不能智能處理。
      [0014] 如上所述,為了有很好的兼容性,Android的顯示系統(tǒng)中同時(shí)包含了硬件繪制和 軟件繪制,但是一個(gè)應(yīng)用程序究竟是使用硬件繪制還是使用軟件繪制是由應(yīng)用程序在初始 化的時(shí)候決定,之后不能更改,所以基于Android3. 0之前SDK發(fā)布的應(yīng)用程序由于沒有加 入使用硬件加速的標(biāo)志位,導(dǎo)致在運(yùn)行在支持硬件加速的平臺(tái)上,不能享受硬件加速特性; 基于Android3. 0之后SDK發(fā)布的應(yīng)用,也由于不能動(dòng)態(tài)切換所以在一些硬件較差(主要是 GPU)的平臺(tái)上運(yùn)行的效果不好,甚至出現(xiàn)不能運(yùn)行的情況。

      【發(fā)明內(nèi)容】

      [0015] 本發(fā)明的目的是通過動(dòng)態(tài)切換繪制方法的手段,修改Android的核心顯示系統(tǒng), 讓應(yīng)用可以在運(yùn)行的過程中根據(jù)平臺(tái)的特性或者自身的需求實(shí)時(shí)的決定繪制方法使用軟 件還是硬件,減少應(yīng)用程序?qū)τ布囊蕾?,提高了其在不同平臺(tái)下兼容性,同時(shí)也讓那些基 于Android3. 0之前SDK發(fā)布的老版應(yīng)用程序在硬件條件比較好的平臺(tái)上順暢的運(yùn)行,提高 了用戶體驗(yàn),另外平臺(tái)可以根據(jù)平臺(tái)的情況在動(dòng)態(tài)的運(yùn)行應(yīng)用程序,節(jié)省了平臺(tái)硬件資源。
      [0016] 本發(fā)明的具體技術(shù)方案如下: 一種Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方法,在現(xiàn)有Android的顯示 系統(tǒng)中,增加 P31系統(tǒng)運(yùn)行監(jiān)控服務(wù)ROS (Runtime Oberserver Service)。該服務(wù)是本發(fā) 明添加的系統(tǒng)監(jiān)測(cè)服務(wù),和P3 -樣也是運(yùn)行的系統(tǒng)服務(wù)進(jìn)程中,它的作用是監(jiān)測(cè)和收集系 統(tǒng)運(yùn)行的狀態(tài)(比如系統(tǒng)的內(nèi)存使用情況,CPU資源占用情況,電池使用情況,平臺(tái)溫度等), 然后根據(jù)這些狀態(tài)來決定P4中使用的繪制方法; 增加 P32應(yīng)用程序繪制控制接口 ADI (Application drawway interface)。該接口是 本發(fā)明添加的供應(yīng)用程序調(diào)用的接口,應(yīng)用程序可以通過該接口強(qiáng)制設(shè)定自己繪制所使用 的方式,并且通過該方式設(shè)定的優(yōu)先級(jí)大于P31 ; 為了達(dá)到本發(fā)明的目的,本發(fā)明除了加了 P31和P32 2個(gè)部分外,還修改了 P4的繪制 流程,具體描述如下: I) P4在初始化的時(shí)候不去根據(jù)硬件加速標(biāo)志位立即申請(qǐng)資源,而是保留該標(biāo)志位,作 為后續(xù)繪制方式選擇的依據(jù),該依據(jù)優(yōu)先級(jí)最低。
      [0017] 2)P4在運(yùn)行的時(shí)候接受P31的繪制方式的通知,并且對(duì)比該通知和當(dāng)前采用的繪 制方法是否一致,如果不一致,立即激活遍歷線程,要求重繪。來自P31的繪制方式優(yōu)先級(jí) 居中,它會(huì)覆蓋初始化時(shí)應(yīng)用程序的硬件加速標(biāo)志位。
      [0018] 3)P4在運(yùn)行的時(shí)候接受P32的繪制方式的通知,并且對(duì)比該通知和當(dāng)前采用的繪 制方法是否一致,如果不一致,立即激活遍歷線程,要求重繪。來自P32的繪制方式優(yōu)先級(jí) 最高,它會(huì)覆蓋來自P31的繪制方式。
      [0019] 4) P4在進(jìn)行繪制的時(shí)候,會(huì)判斷當(dāng)前的繪制方式和外界要求的繪制方式是否一 致,如果不一致,會(huì)釋放當(dāng)前繪制方法所使用的資源,申請(qǐng)新的繪制方法資源,然后進(jìn)行繪 制動(dòng)作。由于Android默認(rèn)的流程是不支持這種資源的動(dòng)態(tài)釋放申請(qǐng),所以這個(gè)地方同時(shí) 也需要修改P2 Surface的接口,增加動(dòng)態(tài)釋放的接口 disconnect (如圖3所示)。另外在 繪制過程中,如果使用硬件繪制的方式出現(xiàn)錯(cuò)誤(可能是由于該應(yīng)用調(diào)用的繪制方法硬件 不支持,或者是由于運(yùn)行的過程中出現(xiàn)內(nèi)存不夠等原因),也可以回退到軟件的方式進(jìn)行繪 制。這樣保證應(yīng)用程序能夠正常運(yùn)行。
      [0020] 有益效果 本發(fā)明的Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方法可以讓一些老款的 應(yīng)用程序在眾多的平臺(tái)上運(yùn)行的很流暢,用戶體驗(yàn)性好;應(yīng)用在繪制的過程中有很強(qiáng)的容 錯(cuò)性,可以讓配置較低的平臺(tái)運(yùn)行更多的應(yīng)用程序。另外由于實(shí)時(shí)的根據(jù)系統(tǒng)平臺(tái)的狀態(tài) 來決定使用軟硬件繪制的方式,讓平臺(tái)可以花費(fèi)最小的硬件資源代價(jià)獲取最大的用戶體 驗(yàn)。這些都可在平板電腦產(chǎn)品上成功實(shí)施。
      [0021] 為了更好的理解本方法的改進(jìn),現(xiàn)在把應(yīng)用程序分為0LD_APK (基于Android3. 0 之前SDK發(fā)布)和NEW_APK ;把平臺(tái)也分為G00D_PLATF0RM(硬件資源較好)和BAD_PLATF0RM (硬件資源差),如下是對(duì)比情況表格:
      【主權(quán)項(xiàng)】
      1. 一種Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方法,在現(xiàn)有Android的顯 示系統(tǒng)中,增加P31系統(tǒng)運(yùn)行監(jiān)控服務(wù)ROS以監(jiān)測(cè)和收集系統(tǒng)運(yùn)行的狀態(tài),然后根據(jù)這些狀 態(tài)來決定P4中使用的繪制方法; 增加P32應(yīng)用程序繪制控制接口ADI,該應(yīng)用程序可以通過該接口強(qiáng)制設(shè)定自己繪制 所使用的方式,并且通過該方式設(shè)定的優(yōu)先級(jí)大于P31 ; 對(duì)于P4視圖樹管理的繪制流程方法,步驟如下: 1. P4在初始化的時(shí)候不去根據(jù)硬件加速標(biāo)志位立即申請(qǐng)資源,而是保留該標(biāo)志位,作 為后續(xù)繪制方式選擇的依據(jù),該依據(jù)優(yōu)先級(jí)最低; 2)P4在運(yùn)行的時(shí)候接受P31的繪制方式的通知,并且對(duì)比該通知和當(dāng)前采用的繪制方 法是否一致,如果不一致,立即激活遍歷線程,要求重繪;來自P31的繪制方式優(yōu)先級(jí)居中, 它會(huì)覆蓋初始化時(shí)應(yīng)用程序的硬件加速標(biāo)志位; 3)P4在運(yùn)行的時(shí)候接受P32的繪制方式的通知,并且對(duì)比該通知和當(dāng)前采用的繪制方 法是否一致,如果不一致,立即激活遍歷線程,要求重繪;來自P32的繪制方式優(yōu)先級(jí)最高, 它會(huì)覆蓋來自P31的繪制方式; 4. P4在進(jìn)行繪制的時(shí)候,會(huì)判斷當(dāng)前的繪制方式和外界要求的繪制方式是否一致, 如果不一致,會(huì)釋放當(dāng)前繪制方法所使用的資源,申請(qǐng)新的繪制方法資源,然后進(jìn)行繪制動(dòng) 作。
      2. 根據(jù)權(quán)利要求1所述的一種Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方 法,其特征在于,所述系統(tǒng)運(yùn)行的狀態(tài)是系統(tǒng)的內(nèi)存使用情況、CPU資源占用情況、電池使用 情況或平臺(tái)溫度。
      3. 根據(jù)權(quán)利要求1所述的一種Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方 法,其特征在于,在P2窗口顯示控制Surface的接口,增加動(dòng)態(tài)釋放的接口disconnect。
      4. 根據(jù)權(quán)利要求1所述的一種Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方 法,其特征在于,在繪制過程中,如果使用硬件繪制的方式出現(xiàn)錯(cuò)誤可以回退到軟件的方式 進(jìn)行繪制,確保應(yīng)用程序能夠正常運(yùn)行。
      5. 根據(jù)權(quán)利要求4所述的一種Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方 法,其特征在于,使用硬件繪制的方式出現(xiàn)錯(cuò)誤可以是由于該應(yīng)用調(diào)用的繪制方法硬件不 支持,或者是由于運(yùn)行的過程中出現(xiàn)內(nèi)存不夠的原因。
      【專利摘要】本發(fā)明涉及Android操作系統(tǒng)的顯示框架,尤其是一種Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方法,在現(xiàn)有Android的顯示系統(tǒng)中,增加P31系統(tǒng)運(yùn)行監(jiān)控服務(wù)ROS以監(jiān)測(cè)和收集系統(tǒng)運(yùn)行的狀態(tài),然后根據(jù)這些狀態(tài)來決定P4中使用的繪制方法;增加P32應(yīng)用程序繪制控制接口ADI,該應(yīng)用程序可以通過該接口強(qiáng)制設(shè)定自己繪制所使用的方式,并且通過該方式設(shè)定的優(yōu)先級(jí)大于P31。本發(fā)明的Android顯示系統(tǒng)的軟件繪制和硬件繪制動(dòng)態(tài)切換方法可以讓一些老款的應(yīng)用程序在眾多的平臺(tái)上運(yùn)行的很流暢,用戶體驗(yàn)性好;應(yīng)用在繪制的過程中有很強(qiáng)的容錯(cuò)性,可以讓配置較低的平臺(tái)運(yùn)行更多的應(yīng)用程序。
      【IPC分類】G06F9-50, G06F9-48
      【公開號(hào)】CN104731653
      【申請(qǐng)?zhí)枴緾N201510146749
      【發(fā)明人】王勝, 常玉成, 邱海峰, 王海波
      【申請(qǐng)人】上海盈方微電子有限公司
      【公開日】2015年6月24日
      【申請(qǐng)日】2015年3月31日
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1