背景
前段時(shí)間入了臺 Google Pixel 2,由于自己在使用舊機(jī) Sony Z1 mini 時(shí)一直都有隱藏導(dǎo)航欄的習(xí)慣,所以也想將 Pixel2 的導(dǎo)航欄隱藏起來。于是,在網(wǎng)路上搜羅一番后,找到了幾種隱藏導(dǎo)航欄的方法,不過都不盡如人意水由,比如有些方法在導(dǎo)航欄隱藏后,Pixel2 時(shí)不時(shí)會(huì)出現(xiàn)亮屏延遲的問題圾结,而有些方法雖解決了亮屏延遲的問題,可當(dāng)前臺為懸浮界面時(shí)導(dǎo)航欄卻不會(huì)下沉筝野。后來晌姚,在某個(gè)帖子里有個(gè)機(jī)友是利用 Tasker 來解決亮屏延遲的:黑屏?xí)r顯示導(dǎo)航欄歇竟,亮屏?xí)r隱藏導(dǎo)航欄。也正是此方法焕议,有了這個(gè)基于 Tasker 與 AutoTools 隱藏與顯示導(dǎo)航欄的功能
前期準(zhǔn)備
應(yīng)用與工具
- Tasker
- AutoTools
- ADB 工具
安裝與設(shè)置
安裝 Tasker 與 AutoTools 應(yīng)用
在應(yīng)用權(quán)限中宝磨,允許 AutoTools 修改系統(tǒng)設(shè)置
-
連接 PC盅安,在命令提示符里輸入以下 ADB 命令
adb shell pm grant com.joaomgcd.autotools android.permission.WRITE_SECURE_SETTINGS
Tasker 項(xiàng)目
(一) ImmersiveMode
原理
獲取系統(tǒng)當(dāng)前的沉浸參數(shù)值,與用戶設(shè)置的參數(shù)值進(jìn)行比對别瞭,得出最終需要設(shè)置的沉浸參數(shù)值窿祥,接著選擇合適的沉浸方案(沉浸導(dǎo)航欄 / 沉浸狀態(tài)欄 / 全屏沉浸)-
任務(wù)
*setImmersiveMode用戶可調(diào)用該任務(wù)來設(shè)置導(dǎo)航欄(或狀態(tài)欄)的沉浸狀態(tài) 參數(shù)值 "on": 沉浸 "off": 不沉浸 - Parameter1 可設(shè)置頂部狀態(tài)欄的沉浸狀態(tài) - Parameter2 可設(shè)置底部導(dǎo)航欄的沉浸狀態(tài)
*toggleImmersiveMode
用戶可調(diào)用該任務(wù)來切換導(dǎo)航欄(或狀態(tài)欄)的沉浸模式 參數(shù)值 "nav": 可切換導(dǎo)航欄沉浸 "status": 可切換狀態(tài)欄沉浸 "full": 可切換全屏沉浸 - Parameter1 可切換導(dǎo)航欄(狀態(tài)欄、全屏)的沉浸模式
$getImmersiveMode
(用戶無需修改)獲取系統(tǒng)當(dāng)前的沉浸參數(shù)值
*setPolicyControl
(用戶無需修改)設(shè)置沉浸值
(二) Exception
該項(xiàng)目里的任務(wù)用于處理任務(wù)運(yùn)行過程中出現(xiàn)的異常
(三) ImmersiveModeTest
ImmersiveMode 的測試?yán)域阌谟脩袅私庠擁?xiàng)目中任務(wù)的使用方法
使用方法
用戶可導(dǎo)入 Tasker 項(xiàng)目文件 ImmersiveModeTest晒衩,根據(jù)所提供的測試任務(wù)來了解用法
效果演示
下載
- 配置
ImmersiveMode, Exception 項(xiàng)目都需導(dǎo)入 ,而 ImmersiveModeTest 項(xiàng)目可按需導(dǎo)入
- ImmersiveMode (uri/xml)
- Exception (uri/xml)
- ImmersiveModeTest (uri/xml)
- 應(yīng)用
- AutoTools_2.1.bf [code:5tia
]
通過 Tasker 自身實(shí)現(xiàn)沉浸功能
自 Tasker 測試版 5.1.4b 起墙歪,開發(fā)者給 Tasker 增加了 WRITE_SECURE_SETTINGS
權(quán)限听系,可通過以下 ADB 命令開啟:
adb shell pm grant net.dinglisch.android.taskerm android.permission.WRITE_SECURE_SETTINGS
這樣,便無需再依靠 AutoTools 插件虹菲,可直接通過 Java Function 的方式來實(shí)現(xiàn)沉浸功能靠胜,下面提供的兩個(gè)任務(wù),可以替換原任務(wù):
- $getImmersiveMode (uri/xml)
- *setPolicyControl (uri/xml)
前些時(shí)間届惋,Tasker 測試版 5.1.7b 內(nèi)置了「Custom Setting」動(dòng)作髓帽,可直接使用該動(dòng)作設(shè)置沉浸功能(仍需通過 ADB 開啟權(quán)限)菠赚,這將更簡單與方便脑豹。同樣地,下面是直接使用該動(dòng)作實(shí)現(xiàn)沉浸功能的兩個(gè)可替換任務(wù):
- $getImmersiveMode (uri/xml)
- *setPolicyControl (uri/xml)
對比 AutoTools 插件衡查,Tasker 直接實(shí)現(xiàn)沉浸功能除了不需要安裝 AutoTools 插件外瘩欺,運(yùn)行時(shí)間也會(huì)短一些
參考資料
更新日志
- 5/5/2018
- 更改 AutoTools 設(shè)置沉浸值的方式為「Custom Setting」,簡化實(shí)現(xiàn)步驟
- 新增通過 Tasker 自身實(shí)現(xiàn)沉浸功能的方法 - 12/14/2017
- 發(fā)布
原創(chuàng)內(nèi)容拌牲,轉(zhuǎn)載請注明出處