通過 Tasker 實現(xiàn)「wm overscan」命令 [No Root]

Overscan 概念

Overscan(過掃描)是一種獨特的調(diào)整畫面顯示效果的方法,常見于老式電視機。它是通過裁剪畫面外邊緣的方式,將所需顯示的內(nèi)容填滿整個電視屏幕,以達到全屏顯示的要求。

Android 的 Overscan

如今的電視大多是基于 Android 系統(tǒng)的智能電視,因此 Google 也提供了與 Overscan 相關(guān)的 API,讓開發(fā)者可以通過 Overscan 值的設(shè)置,使得所開發(fā)的應用在不同的電視上都能以最佳的顯示效果呈現(xiàn)給用戶。


界面布局,來源:http://blog.csdn.net/longyc2010/article/details/41599209

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)限

  1. 下載并導入所需的 Tasker 項目(Project)
  2. 通過 執(zhí)行任務(Perform Task) 動作運行 *setOverscan 任務(所傳入的參數(shù) 1 為要設(shè)置的 Overscan 值)

下載

注:需導入以下所有帶星號的項目(非星號項目可按需導入)

參考資料

  1. Overscan - Wikipedia
  2. Build layouts for TV | Android Developers
  3. Kitkat小屏幕模式單手操作研究之wm命令的實現(xiàn)方式分析

更新日志

  • 1/23/2019
    - 發(fā)布

原創(chuàng)內(nèi)容,轉(zhuǎn)載請注明出處

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容