PCでAndroid端末の画面転送と操作が出来るscrcpy

Genymobile/scrcpy: Display and control your Android device

Debian sid amd64環境ではパッケージがあるので簡単です，armhf/amd64/i386環境ではsnap版が存在します．その他幾つかのLinuxディストリビューションではパッケージがあったり，WindowsやmacOSでも動作するようです．

手元ではDebian sid amd64で動作しました．(Raspberry Pi OS armhfにsnap版を入れた環境ではエラーが発生．内容は未だ未確認)

Debian sid amd64環境だと以下のような感じで導入できました．このときAndroid端末は「開発者向けオプション」が有効になっていて，「USBデバッグ」が有効になっている状態でUSB接続されている必要があります．

Debian sid amd64環境での導入例

$ sudo apt install adb scrcpy (1)
$ lsusb (2)
:
Bus 002 Device 013: ID 05c6:9024 Qualcomm, Inc. SDM439-MTP _SN:472BF8D8
:
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="05c6" ATTR{idProduct}=="9024", MODE="0660", GROUP="plugdev", SYMLINK+="android%n"' \
| sudo tee -a /etc/udev/rules.d/51-android.rules (3)
$ sudo udevadm control --reload (4)
$ adb devices (5)
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
976d6a56 device

必要パッケージの導入

AndroidのVID/PIDを確認(ここでは 05c6:9024 )

adbコマンドが利用できるようにAndroid端末をudev roureに登録

udev ruleを反映する

adbコマンドで認識出来るのを確認

この状態で，scrcpy を実行することでAndroidの画面転送が出来ました．普通に操作も出来ます．
スリープ状態のときは画面が真っ黒ですが，マウス右クリックで解除されます．

$ scrcpy
INFO: scrcpy 1.14 <https://github.com/Genymobile/scrcpy>
/usr/share/scrcpy/s...93 bytes in 0.008s)
[server] INFO: Device: TINNO C330 (Android 9)
INFO: OpenGL shaders: ENABLED
INFO: Created renderer: opengl
INFO: Renderer: opengl
INFO: OpenGL version: 3.0 Mesa 20.2.4
INFO: Trilinear filtering enabled
INFO: Initial texture: 720x1280

導入も簡単だしこれは便利．しかしメイン端末ではPCにUSB接続するとすぐに充電しなくなってしまうので長時間は使えません．

adb のワイヤレス接続の設定をすると別の端末や充電器で充電しながら利用できそうなので試してみました．

対象のAndroid端末をPCにUSB接続した状態で tcpip コマンドでリモート接続できるようにします．

$ adb tcpip 5555
restarting in TCP mode port: 5555

この状態でPCからAndroid端末を取り外し，Wi-Fi接続のIPアドレスを確認します．

PCでadbコマンドでAndroid端末に接続します．

$ adb connect <ANDROID_IP>>:5555

この状態で scrcpy コマンドを実行すると画面が表示され操作できます．充電器などに接続した状態でも利用できます :)

scrcpy には幾つかオプションがあります．便利そうなものとしては最大解像度を指定する -m, --max-size value で解像度を下げて表示できます，
-n, --no-control で表示だけで操作できなくします．
-r, --record file で画面を録画します．
-w, --stay-awake でscrcpyを実行中Android画面をロック，消灯しません．
-S, --turn-screen-off Android端末のスクリーンを消したまま操作できます．

ショートカットでは
Ctrl + h, マウス中キー でホームボタン，
Ctrl + r でAndroid画面回転，
Ctrl + s でアプリケーション切り替え，
辺りが便利そうです，

Ctrl + c でクリップボードのコピーなのですが，一旦Android側でコピーした後に Ctrl + c でPCへのクリップボードコピーのようです，Ctrl + v の貼り付けもAndroid感での貼り付けで，PCからAndroidのクリップボード貼り付けは Ctrl + Shift + v でした．

詳細は scrcpy --help を参照してください．

これでElectronアプリでPCで動かしているアプリをスマホで……とも思ったのですが日本語入力などはちょっと面倒．もう少し様子見しようと思います．