一種基于Android的分辨率自動調(diào)整方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于Android的分辨率自動調(diào)整方法及系統(tǒng)。
【背景技術(shù)】
[0002]Android(安卓)系統(tǒng)是一種基于Linux平臺的開源操作系統(tǒng),目前被廣泛應(yīng)用于手機、平板等智能便攜式數(shù)碼設(shè)備中,隨著Android辦公類應(yīng)用的日益成熟,Android設(shè)備也朝著辦公終端方向發(fā)展,由單一觸摸屏的輸出,邁向更加多樣的外接顯示輸出。由于Android系統(tǒng)之前是基于單一觸摸屏輸出而設(shè)計,內(nèi)核中已經(jīng)固定了固定的輸出比例,不能進行修改,如常見的手機屏幕分辨率有480*800,平板類的屏幕分辨率有1920*1080,如果將這樣的固定輸出的顯示比例一旦接入到比例不一致的VGA/HDMI顯示器中,就會出現(xiàn)整體的畫面會被拉伸或擠壓變形,無法適應(yīng)市面上多樣化的顯示器的接入需求。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問題之一,在于提供一種基于Android的分辨率自動調(diào)整方法,實現(xiàn)了應(yīng)用程序中分辨率與CPU輸出分辨率的一致性,有效解決了不同外接顯示器顯示時出現(xiàn)的屏幕拉伸或壓縮問題。
[0004]本發(fā)明要解決的技術(shù)問題之一是這樣實現(xiàn)的:一種基于Android的分辨率自動調(diào)整方法,包括如下步驟:
[0005]步驟10、在Android文件系統(tǒng)的起始空白區(qū)域劃分一存儲扇區(qū);
[0006]步驟20、通過BootLoader程序讀取存儲扇區(qū)內(nèi)的數(shù)據(jù),并將該數(shù)據(jù)作為Kernel (操作系統(tǒng)內(nèi)核)程序的啟動參數(shù)傳給內(nèi)核;
[0007]步驟30、啟動Kernel程序,解析BootLoader程序傳入的參數(shù),得到歷史分辨率,并初始化LCDC (液晶顯示控制器)驅(qū)動,將歷史分辨率賦值給CPU輸出分辨率;
[0008]步驟40、通過顯示器驅(qū)動獲取當(dāng)前外接顯示器的最佳分辨率,并將當(dāng)前外接顯示器的最佳分辨率寫入存儲扇區(qū);
[0009]步驟50、判斷歷史分辨率與當(dāng)前外接顯示器的最佳分辨率是否一致,若一致,則進入步驟60,否則,返回步驟20;
[0010]步驟60、啟動Android主服務(wù),在Android主服務(wù)中,啟動顯示服務(wù),獲取CPU輸出分辨率,把CPU輸出分辨率賦值給Android框架層的display-size。
[0011]進一步的,所述存儲扇區(qū)大小為512字節(jié)。
[0012]進一步的,所述步驟40具體包括:
[0013]步驟41、通過顯示器驅(qū)動獲取當(dāng)前外接顯示器的EDID (擴展顯示標(biāo)識數(shù)據(jù))信息,從EDID信息中獲取當(dāng)前外接顯示器的最佳分辨率;
[0014]步驟42、把當(dāng)前外接顯示器的最佳分辨率寫入存儲扇區(qū)內(nèi),替換存儲扇區(qū)中原有的數(shù)據(jù)。
[0015]本發(fā)明要解決的技術(shù)問題之二,在于提供一種基于Android的分辨率自動調(diào)整系統(tǒng),實現(xiàn)了應(yīng)用程序中分辨率與CPU輸出分辨率的一致性,有效解決了不同外接顯示器顯示時出現(xiàn)的屏幕拉伸或壓縮問題。
[0016]本發(fā)明要解決的技術(shù)問題之二是這樣實現(xiàn)的:一種基于Android的分辨率自動調(diào)整系統(tǒng),包括:
[0017]存儲扇區(qū)建立模塊:用于在Android文件系統(tǒng)的起始空白區(qū)域劃分一存儲扇區(qū);
[0018]存儲扇區(qū)讀取模塊:用于通過BootLoader程序讀取存儲扇區(qū)內(nèi)的數(shù)據(jù),并將該數(shù)據(jù)作為Kernel (操作系統(tǒng)內(nèi)核)程序的啟動參數(shù)傳給內(nèi)核;
[0019]CPU輸出分辨率設(shè)置模塊:用于啟動Kernel程序,解析BootLoader程序傳入的參數(shù),得到歷史分辨率,并初始化LCDC(液晶顯示控制器)驅(qū)動,將歷史分辨率賦值給CPU輸出分辨率;
[0020]當(dāng)前外接顯示器信息獲取與存儲模塊:用于通過顯示器驅(qū)動獲取當(dāng)前外接顯示器的最佳分辨率,并將當(dāng)前外接顯示器的最佳分辨率寫入存儲扇區(qū);
[0021]判斷模塊:用于判斷歷史分辨率與當(dāng)前外接顯示器的最佳分辨率是否一致,若一致,則進入顯示尺寸確定模塊,否則,進入存儲扇區(qū)讀取模塊;以及
[0022]顯示尺寸確定模塊:用于啟動Android主服務(wù),在Android主服務(wù)中,啟動顯示服務(wù),獲取CPU輸出分辨率,把CPU輸出分辨率賦值給Android框架層的display-size。
[0023]進一步的,所述存儲扇區(qū)大小為512字節(jié)。
[0024]進一步的,當(dāng)前外接顯示器信息獲取與存儲模塊具體包括:
[0025]當(dāng)前外接顯示器信息模塊:用于通過顯示器驅(qū)動獲取當(dāng)前外接顯示器的EDID (擴展顯示標(biāo)識數(shù)據(jù))信息,從EDID信息中獲取當(dāng)前外接顯示器的最佳分辨率;以及
[0026]存儲扇區(qū)數(shù)據(jù)更新模塊:用于把當(dāng)前外接顯示器的最佳分辨率寫入存儲扇區(qū)內(nèi),替換存儲扇區(qū)中原有的數(shù)據(jù)。
[0027]本發(fā)明具有如下優(yōu)點:本發(fā)明實現(xiàn)自動檢測外接顯示器的顯示比例,獲取外接顯示器的最佳分辨率,并通過修改CPU輸出分辨率,確保應(yīng)用程序中分辨率與CPU輸出分辨率一致,本發(fā)明可支持市面上所有顯示比例的正常輸出,能夠自動適應(yīng)不同外接顯示器的不同分辨率顯示相應(yīng)比例的界面,有效解決了顯示中出現(xiàn)的屏幕拉伸或壓縮問題。
【附圖說明】
[0028]下面參照附圖結(jié)合實施例對本發(fā)明作進一步的說明。
[0029]圖1為本發(fā)明方法執(zhí)行流程圖。
[0030]圖2為本發(fā)明系統(tǒng)邏輯結(jié)構(gòu)示意圖。
【具體實施方式】
[0031]請參閱圖1,一種基于Android的分辨率自動調(diào)整方法,包括如下步驟:
[0032]步驟10、在Android文件系統(tǒng)的起始空白區(qū)域劃分一存儲扇區(qū),所述存儲扇區(qū)大小為512字節(jié),用于存儲外接顯示器的最佳分辨率;
[0033]步驟20、通過BootLoader程序讀取存儲扇區(qū)內(nèi)的數(shù)據(jù),并將該數(shù)據(jù)作為Kernel程序的啟動參數(shù)傳給內(nèi)核;
[0034]步驟30、啟動Kernel程序,解析BootLoader程序傳入的參數(shù),得到歷史分辨率,并初始化LCDC驅(qū)動,將歷史分辨率賦值給CPU輸出分辨率,由于顯示器驅(qū)動晚于LCDC驅(qū)動初始化,所有之后才能對設(shè)置的CPU物理分辨率進行判斷;
[0035]步驟40、通過顯示器驅(qū)動獲取當(dāng)前外接顯示器的最佳分辨率,并將當(dāng)前外接顯示器的最佳分辨率寫入存儲扇區(qū);該步驟具體包括:
[0036]步驟41、通過顯示器驅(qū)動獲取當(dāng)前外接顯示器的EDID信息,EDID信息中包括了外接顯示器適合的分辨率和最佳分辨率信息,從EDID信息中獲取當(dāng)前外接顯示器的最佳分辨率;
[0037]步驟42、把當(dāng)前外接顯示器的最佳分辨率寫入存儲扇區(qū)內(nèi),替換存儲扇區(qū)中原有的數(shù)據(jù);
[0038]步驟50、判斷歷史分辨率與當(dāng)前外接顯示器的最佳分辨率是否一致,若一致,則進入步驟60,否則,返回步驟20;
[0039]步驟60、啟動Android主服務(wù),在Android主服務(wù)中,啟動顯示服務(wù),獲取CPU輸出分辨率,把CPU輸出分辨率賦值給Android框架層的display-size,把display-size設(shè)置成與Android應(yīng)用程序獲取到的CPU輸出分辨率一致的分辨率,由于display-si