有時候?qū)τ趍tk開發(fā)中有一個很特殊的需求。
那就是mtk的手機平臺不支持橫屏模式的display panel屏幕,只支持豎屏。
mtk的平板平臺才支持橫屏掃描的屏幕。這個可能是mtk兩個部門之間的策略規(guī)定。
其他rockchip、高通平臺沒有這種限制。
如果你需要用mtk手機平臺開發(fā)橫屏掃描的屏幕(注意不是豎屏橫著用,這是另外一種情況,豎屏橫著用,顯然mtk手機平臺直接就支持)。
于是,你的解決辦法是,在驅(qū)動側(cè),把480240的橫屏,驅(qū)動側(cè)給mtk的mipi信息,故意改為480640的豎屏,但是屏幕其實是橫屏,所以clock故意按照480*640分辨率來計算。再做微調(diào)clock頻率,保證顯示是正確的。
然后你看到屏幕顯示只是480640的上面部分,因為屏幕實際只有480240。
而你返回給android上層的分辨率是480640的。
為此,為了讓上層應用只知道屏幕只有480240,那么你需要修改如下地方:
對應mtk Android L:修改:
frameworks/native/services/surfaceflinger/DisplayHardware/HWComposer.cpp
queryDisplayProperties()函數(shù)的
case HWC_DISPLAY_WIDTH 設置的config.width = 480;
case HWC_DISPLAY_HEIGHT 設置的config.height = 240;
對于mtk Android O(android 8.1)代碼:修改
frameworks/native/services/surfaceflinger/DisplayHardware/HWC2.cpp
Display::loadConfig()函數(shù)中,
.setWidth(480)
.setHeight(240)
說白了,就是上層surfaceflinger獲取display hardware屬性時,故意告訴他另外的分辨率480*240,這樣surfaceflinger在畫圖時,就按照這個目標display分辨率就行render merge了。從而實現(xiàn)顯示效果。
另外需要注意mtk的kernel配置項defconfig文件中的:
CONFIG_MTK_LCM_PHYSICAL_ROTATION_HW=y
如果配置了這個,那么硬件就會旋轉(zhuǎn)180,從而顯示framebuffer的下半部份,而且是180度旋轉(zhuǎn)的。導致的結(jié)果是,你在surfaceflinger只畫了framebuffer的上半部,而硬件上顯示下版本,導致圖像顯示是framebuffer的下半部的隨機數(shù)據(jù)。所以不要設置CONFIG_MTK_LCM_PHYSICAL_ROTATION_HW=y
另外也要注意mtk的ProjectConfig.mk文件的 CONFIG_MTK_LCM_PHYSICAL_ROTATION="0"
另外我的相關(guān)培訓視頻請看:
歡迎觀看我發(fā)布的各個課程: https://edu.51cto.com/lecturer/8896847.html
內(nèi)含免費視頻。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
本文標題:Android中關(guān)于如何限制上層應用只在特定區(qū)間畫圖-創(chuàng)新互聯(lián)
當前地址:http://chinadenli.net/article46/dcpdeg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、App開發(fā)、服務器托管、響應式網(wǎng)站、外貿(mào)建站、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容