Overscan 概念
Overscan(過掃描)是一種獨特的調(diào)整畫面顯示效果的方法,常見于老式電視機。它是通過裁剪畫面外邊緣的方式,將所需顯示的內(nèi)容填滿整個電視屏幕,以達到全屏顯示的要求。
Android 的 Overscan
如今的電視大多是基于 Android 系統(tǒng)的智能電視,因此 Google 也提供了與 Overscan 相關(guān)的 API,讓開發(fā)者可以通過 Overscan 值的設(shè)置,使得所開發(fā)的應用在不同的電視上都能以最佳的顯示效果呈現(xiàn)給用戶。

Android 可通過 wm 工具中的 wm overscan [reset|LEFT,TOP,RIGHT,BOTTOM] 命令設(shè)置用于顯示的 Overscan 區(qū)域,例如執(zhí)行 wm overscan 50,50,50,50 命令后,會將顯示界面往里縮小 50像素;若將 50 改為 -50,則顯示界面會往外擴大 50 像素。
Tasker 實現(xiàn) wm overscan 命令的原理
通過反射的方式調(diào)用 wm 工具中的 setOverscan 方法
Tasker 項目說明
Overscan
- 任務
-
*setOverscan
主任務,用于設(shè)置 Overscan 參數(shù) 1: 顯示邊緣距離屏幕邊緣的左側(cè)、上側(cè)、右側(cè)、下側(cè)的 4 個參數(shù), 它們之間必須以英文逗號進行分隔,如 0,0,0,-100 -
*$setOverscan@1
通過授予 WRITE_SECURE_SETTINGS 權(quán)限的方式設(shè)置 Overscan 參數(shù) 1: 同任務 *setOverscan 返回: 若設(shè)置成功,返回 true 若設(shè)置不成功,則顯示錯誤信息,且不返回任何值 -
*$setOverscan@2
通過 Root 的方式設(shè)置 Overscan 參數(shù) 1: 同任務 *setOverscan 返回: 同任務 *$setOverscan@1 -
setOverscanSettingMode
設(shè)置當前可用的 Overscan 設(shè)置方式 有以下 2 種方式 方式 1:WRITE_SECURE_SETTINGS 權(quán)限 方式 2:Root 若這 2 種方式都可用,則優(yōu)先使用方式 1, 若想改用方式 2,可手動將全局變量 %OVERSCAN_SETTING_MODE 設(shè)置為 2 若任一方式都不可用,將顯示錯誤信息 -
$getOverscan
獲取當前 Overscan 值 返回: 當前 Overscan 值,如 0,0,0,-100
- 全局變量
-
%OVERSCAN_SETTING_MODE
任務 *setOverscan 會根據(jù)該值調(diào)用設(shè)置 Overscan 的方式 1: WRITE_SECURE_SETTINGS 權(quán)限 2: Root 若沒有值,則表示當前沒有可用的 Overscan 設(shè)置方式
OverscanDemo
Overscan 的使用例子,僅供參考
- 任務
-
demo@Shrink Overscan
縮小 Overscan 區(qū)域的例子 -
demo@Expand Overscan
擴大 Overscan 區(qū)域的例子 -
demo@Reset Overscan
重置 Overscan 區(qū)域的例子
使用方法
注:對于 No Root 的設(shè)備,其所安裝的 Tasker 必須為 5.2 及以上版本,并使用 ADB 命令授予 WRITE_SECURE_SETTINGS 權(quán)限
- 下載并導入所需的 Tasker 項目(Project)
- 通過
執(zhí)行任務(Perform Task)動作運行*setOverscan任務(所傳入的參數(shù) 1 為要設(shè)置的 Overscan 值)
下載
注:需導入以下所有帶星號的項目(非星號項目可按需導入)
參考資料
更新日志
- 1/23/2019
- 發(fā)布
原創(chuàng)內(nèi)容,轉(zhuǎn)載請注明出處