快轉到主要內容

Waydroid + Scrcpy,縮放視窗大小與多開遊戲,解決APP無法觸控的問題

· 民國114年乙巳年
·
切換繁體/簡體
分類   資訊科技 虛擬機與容器技術
標籤   Waydroid Scrcpy
目錄

探討如何將Linux的Waydroid視窗化,同時執行多個遊戲,與多開遊戲的可能性。

如果說要把Waydroid當成Windows的Android模擬器使用,任其可以像Bluestacks自由縮放視窗大小,恐怕有困難。

Bleustacks的多開畫面示意圖,取自官網

因為目前Waydroid的畫布大小在啟動LXC容器的時候就判定了,預設會以桌面環境大小為基準。之後Android端的畫面就會是那個時候所取得的解析度。

如果改用Waydroid多視窗懸浮(multi window mode)模式來縮放APP呢?多視窗就能讓多個APP同時執行了?不好,目前Waydroid對多視窗的支援度不佳,常常跑版,且許多遊戲APP依然會強制進入全螢幕。

我可以想到的一個解方,就是用同一部電腦的Scrcpy去連Waydroid,這樣一來這個Android畫面的視窗就是可以縮放的。再搭配waydroid shell wm size指令即時修改Waydroid畫面解析度即可。

用Scrcpy控制Waydroid還有個好處,那就是對模擬觸控的支援度更好。有些APP只認觸控點擊事件,如果Waydroid的Fake Touch功能無效的話,通常可以用Scrcpy解決。

1. Scrcpy搭配Waydroid的用法
#

本文所有的操作都是在Scrcpy視窗進行的,並非Waydroid自身的視窗。

  1. 在Linux安裝Waydroid

  2. 安裝Scrcpy

  3. 開啟Waydroid系統設定,到「關於手機」查找IP位址,通常是192.168開頭

  4. 使用以下指令啟動Scrcpy,連線到Waydroid,解析度設定1920。不用傳輸音效,Waydroid視窗不開,聲音也會一直輸出到Linux的PipeWire。

scrcpy -s 192.168.240.112 -m 1920 --no-audio
  1. Scrcpy視窗執行的時候,Waydroid的視窗可以最小化或者關閉,但有時候會造成Waydroid重開機的樣子?

  2. Scrcpy視窗縮放之後,Waydroid解析度不會變化,而是啟動時就固定了,若太高會導致UI元素變小,此時可以用ADB的wm指令,動態修改Android端的解析度和DPI,而不用重啟Waydroid容器。

sudo waydroid shell wm size 1280x720

sudo waydroid shell wm density 240
  1. 這樣能讓APP的UI元素大一些。

  2. 另一種永久修改Waydroid解析度的方式是改設定檔,不過修改後需要重啟Waydroid容器。

waydroid prop set persist.waydroid.width 1280

waydroid prop set persist.waydroid.height 720
  1. 修改的DPI的話則是要編輯Waydroid設定檔,填入數值ro.sf.lcd_density=240
sudo vim /var/lib/waydroid/waydroid_base.prop
  1. 然後重啟容器。
sudo systemctl restart waydroid-container
  1. 不過我注意到強制改解析度,雖然Scrcpy可以正常操作,但Waydroid原本視窗滑鼠DPI會跑掉導致點選錯亂。如果要重置解析度的話:
sudo waydroid shell wm size reset

sudo waydroid shell wm dpi reset

waydroid prop set persist.waydroid.width ""

waydroid prop set persist.waydroid.height ""

sudo systemctl restart waydroid-container

2. Waydroid同時執行多個遊戲
#

「多開」遊戲,一個畫面同時執行多款不同的遊戲。

前文已經說過,Waydroid的多視窗懸浮模式雖然能夠把APP視窗化,在一個畫面同時執行多個APP,但是Waydroid的視窗管理非常不穩定,畫面常常亂跑或者大小錯亂。

講到多開問題,只要這樣做就好了吧:利用Scrcpy的Virtual Display功能建立虛擬顯示器,每個顯示器執行一個遊戲,就能同時在Waydroid裡面執行多個遊戲了…但是我執行後是黑螢幕,看來Android 11做不到這點。

那就只能利用Android內建的分割螢幕功能了,假設要同時執行兩個橫向遊戲,應該要先把Waydroid變成「直向」的解析度,我這裡是參考Samsung平板的解析度:

sudo waydroid shell wm size 1600x2560

然後再進入多工界面,上下分割遊戲。遊戲無法分割的話,到Android開發人員選項開啟強制可調整大小。

3. 多開遊戲帳號
#

雖然基於LXC,可Waydroid不支援多重實例,不過有的是辦法。

要一個遊戲兩個帳號,使用Shelter的工作設定檔切開,分開登入就好。

相關文章

Waydroid使用技巧:解決沒網路、觸控沒反應、註冊Play商店、安裝ARM轉譯器
分類   資訊科技 虛擬機與容器技術
標籤   Waydroid Linux Android
Waydroid + Weston + Scrcpy以headless模式執行Android APP
分類   資訊科技 虛擬機與容器技術
標籤   Raspberry Pi Waydroid Cloud Gaming Wayland
Waydroid躲避Root偵測 & 安裝Magisk與LSPosed
分類   資訊科技 虛擬機與容器技術
標籤   Waydroid Magisk Xposed

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。