Android Change Resolution
在Android系統中,我們可以通過編譯系統檔案來更改Resolution。
必須具有root權限,才能編譯系統檔案。
先取得root權限並remount後,使用adb shell進入Android系統中。
1 | adb root |
Adb 修改方式
Step 1: 更改解析度
1080p
1 | echo 1080p60hz > /sys/class/display/mode |
720p
1 | echo 720p60hz > /sys/class/display/mode |
Step 2: 更改視窗大小
當我們執行完步驟一後,會發現畫面會錯亂或是沒有被縮放。
以下為由720p更改為1080p的結果。
原因是因為視窗大小沒有被改變的原因。
更改視窗大小
1080p
1 | echo 0 0 1919 1079 > /sys/class/graphics/fb0/window_axis |
720p
1 | echo 0 0 1279 719 > /sys/class/graphics/fb0/window_axis |
Step 3: 更改控制範圍
步驟二執行完畢後,發現畫面有正常顯示了,但是滑鼠的移動範圍依舊為1280x720的位置,而無法正常的移到最下方或最右方。
因此我們必須調整控制範圍。
1080p
1 | echo 1920 1080 1920 1080 > /sys/class/graphics/fb1/scale_axis |
720p
1 | echo 1920 1080 1280 720 > /sys/class/graphics/fb1/scale_axis |
以上為使用adb shell進入Android系統來更改Resolution的方式。
程式修改方式
在程式中修改的方式如下:
首先必須先確認Android 系統的su指令位於何處,可能在/system/xbin中或/system/bin中。
使用ProcessBuilder.command的方式來執行。
720p
1 | private void change720p() { |
1080p
1
2
3
4
5
6
7
8
9
10
11
12
13private void change1080p() {
try {
ProcessBuilder pb = new ProcessBuilder();
pb.command("/system/xbin/su", "-c", "echo 1080p60hz > /sys/class/display/mode").start().waitFor();
pb.command("/system/xbin/su", "-c", "echo 0 0 1919 1079 > /sys/class/graphics/fb0/window_axis").start().waitFor();
pb.command("/system/xbin/su", "-c", "echo 1920 1080 1920 1080 > /sys/class/graphics/fb1/scale_axis").start().waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Android Change Resolution
https://nickcarter9.github.io/2020/03/09/2020/2020_03_09-change_resolution/