Help us understand the problem. What is going on with this article?

PCでAndroid端末を操作したい(wifi, non root)

2019/03/24追記 最近のプチフリ問題を追記
2019/06/17追記 v1.9更新に伴いバッチ記述を修正、古いのはまとめてセクションも整理、導入を少し詳細に
2019/08/06追記 v1.10について更新
2019/12/10追記 v1.12について更新(すぐ修正が来たのでv1.12.1に更新を推奨)

scrcpyというのでリモート操作できるらしい

scrcpy。DLはreleasesってなってるタブからscrcpy-releases
Androidアプリ開発で昔お世話になったGenymotionが関係しているのかな。出元は確かな気がする多分。
Windows, Mac, Linuxなどなど対応してるっぽい。
以下使ってみた感想と、使い方。

利点

  • PCにインストール不要でポータブルに使いまわせる。apkインストールも不要。
  • ワイヤレス接続できる
  • エミュレーターと違って起動終了が楽ちん。
  • Windows側のリソースをエミュレータほど使わない。
  • ゲームとかもスルスル動いている模様、録画もできる
  • 実在端末そのもののリモート操作なのでアカウントやデータが複数端末に散らばらない。
  • 起動はバッチでワンクリック。即座に接続、接続終了できる。
  • 一度Android端末にadb tcpip xxxxしてやれば、複数PCから接続できる。繋ぎ変えには一回一回切断作業が必要。
  • 複数Android端末を同時に起動できない?
    • 複数同時に起動するには別フォルダにadb.exeとscrcpy.exeのセットを用意して使用すれば大丈夫?確認が必要。
    • こちらに追記
  • マウスキーボード操作が可能、クリップボード文字列も共有される。(v1.9で正式に相互共有対応)
  • 画面を消灯したまま操作可能!(v1.9)
  • WindowsタッチパネルPCで長押しに対応してた!(v1.10)

問題点

  • Android5以上の端末が必要。最低動作環境
  • Android端末の再起動のたびにUSBで直接接続してadb tcpip xxxxの操作が必要。
    • ただAndroidは基本起動しっぱなし運用だろうし大きな問題ではないのでは。
  • 音が出ないので別途Android端末から音を引っ張ってくるものが必要(bluetoothヘッドホンとか)。
  • マウスで操作できるがショートカットは覚える必要がある。
  • 片側が有線LANでないと動作遅延が酷い。PC(有線LAN)←→Android(無線LAN)だと快適。PC(無線LAN)←→Android(無線LAN)だと100~500msくらい遅延する気がする。
    • かと思いきや、端末パワー依存っぽい。左記構成でも、貧弱スマホだと遅い。
    • Zenpad3 8.0(2016/9発売)は片側無線接続でも快適だが、同じ接続方式でもXperia Z3 Compact(2014/11発売)は動作がぬるい。
  • Android側に有線LANアダプタが欲しくなるが、アダプタの対応端末が少ない。

使い方

! Android端末側で「USBデバッグを許可」の設定が必要です
一旦Android端末をPCにUSBで繋いでadb tcpip xxxxしてしまえば違うPCからもadb connect xxx.xxx.xx.xx:xxxxxで接続が可能です。

DLしたscrcpy一式をお好きなフォルダに設置して、初回のADB登録操作をまず行います。バッチ作ってもいいし、コマンドプロンプトで直でもOK。
USBケーブルでAndroid端末を接続して、WindowsからAndroid端末が認識されてから行ってください。
登録が無事終わったら、USBケーブルを外してOK。この操作は、Android端末を再起動する度に必要になります。
"C:\Users\xxx\OneDrive\sync\scrcpy"のところを書き換えてください。

@@@adb_touroku.bat
cd /d "C:\Users\xxx\OneDrive\sync\scrcpy"
adb tcpip 5555

詳しくはドキュメント見てください。
OneDrive等、共有フォルダに一式丸ごと共有して使いまわすと便利です。
以下、ADB登録が終わったあとにリモート接続するバッチ。

バッチ記述例

ポートは何処でもよさげです。公式例では5555。
Android側のIPアドレス固定については、やったほうがいいですが、必須ではないので必要なら検索してください
使ってるAndroid端末のIPアドレスの調べ方はこのへんで。

2019/06/17 以下のセクションのバッチをすべて盛り込んだ最新のバッチをここに記載する。
#画面を消灯したまま操作できるようになった!(v1.9) 問題出たので外しました
#複数端末を同時に操作する
#動作がぬるいのをオプションで改善してみる
DOS窓が邪魔なのでバッチファイルを最小化で起動の情報を参考に組み込んだ。

v1.12では--bit-rateのオプションを付けると起動しない模様なので一旦消しました。デフォルト8Mで動くはず。
--bit-rate は1.5Mという指定をしたかったけど小数点解釈してくれないようなので1500Kという表現で代用。

@@xperia.bat
@echo off
if not "%~0"=="%~dp0.\%~nx0" (
     start /min cmd /c,"%~dp0.\%~nx0" %*
     exit
)
cd /d "C:\Users\xxx\OneDrive\sync\scrcpy"
::
adb connect 192.168.1.5:5555
::scrcpy -s 192.168.1.5 -p 5555 --bit-rate 2M --max-size 1024 --turn-screen-off この行はコメントアウト行
scrcpy -s 192.168.1.5 -p 5555 --bit-rate 1500K --max-size 1024
adb disconnect 192.168.1.5:5555

以下は作っておくと便利なバッチ。

ADB登録用バッチ。

Android端末を再起動したときなどに、Android端末をUSB接続してからバッチ一発叩くだけで再登録完了。

@@@adb_touroku.bat
cd /d "C:\Users\xxx\OneDrive\sync\scrcpy"
adb tcpip 5555

ADBキルバッチ。

なんらかのタイミングで、scrcpyで接続できなくなったときに、WindowsやAndroid端末の再起動を行う前に試すと吉。

@@@adb_kill.bat
cd /d "C:\Users\xxx\OneDrive\sync\scrcpy"
adb kill-server

--bit-rateのオプションを付けると起動しない模様(v1.12)

2019/12にリリースされたv1.12を試したところ、-bit-rate 2Mの記述があると起動しなかった。
軽く値を変えて試してみたが、どうもout of rangeと出て起動しない。
とりあえず上のほうの記述例からbitradeの記述を消した。

バグだったようですぐ更新がリリースされた。
v1.12.1をダウンロードしたら直ったので記述を戻した。

画面消したままでも安定した!あとWindowsのタッチパネルに対応したっぽい(v1.10)

2019/08にリリースされたv1.10を試してみてる途中で気付いたのだけどタッチパネル長押しに対応したっぽいです。
普通にタブレットPCから指で長押しが反応するようになった模様!右クリック反応が起きない!これで捗るね。。
あと画面暗転起動のオプションがv1.9だと不安定だったけどv1.10だと安定してるっぽいです。
一晩置いておいても接続に失敗しない!

追記
暗転起動オプション、リモート接続は問題ないんだけど、、今度は本体が暗転してどうやっても復帰しなくなる気がする。
scrcpyで接続すると動くんだけど、本体直で弄るのが出来なくなるっぽい。
このオプションはもうしばらく様子見再開。

画面を消灯したまま操作できるようになった!(v1.9)

https://github.com/Genymobile/scrcpy/releases/tag/v1.9
2019/6にリリースされたv1.9だと画面を消灯したまま操作できるようになった模様。
オプションを追記したバッチはこっち。プチフリ問題も再現しなくなった(SDLを公式にダウングレードしたらしい)ようなのでそのまま全上書きアップデートで大丈夫っぽい。
scrcpy --turn-screen-off

githubのスレッド見てると音声の転送系にも言及してるようなので、v2.0辺りでついに音声系も転送できるようになったりするかしら?
Linuxで、USB接続が前提だが一応実装してみたレベルの段階らしい

追記
しばらく放置していた端末に接続しようとすると接続失敗するような気がする。
数時間~一晩?放置していると接続失敗になる気がする。端末を直接触って画面ロック解除なりしてやるとまたリモート接続できるようになる模様。
利用環境によるが、サーバー用途で使うならこのオプションは外しておいた方がいいと思う。

複数端末を同時に操作する(※参考バッチ)

adb.exeとscrcpy.exeのセットは1つで大丈夫っぽい。
IPアドレスだけ分けて記述してやればOK。
DOS窓は複数出す必要あるのでバッチファイルは分けます。
何か出てるけど動いてるのでとりあえず(゚ε゚)キニシナイ!!

adb tcpip 5555での初回登録の記述を消し忘れると同時起動できないので注意。

複数記述例あると混乱するので、すべて盛り込んだバッチはこちらのセクションに移動

@@xperia.bat
@echo off
cd /d "C:\Users\xxx\OneDrive\sync\scrcpy"
::
adb connect 192.168.1.5:5555
scrcpy -s 192.168.1.5 -p 5555
adb disconnect 192.168.1.5:5555
@@zenfone.bat
@echo off
cd /d "C:\Users\xxx\OneDrive\sync\scrcpy"
::
adb connect 192.168.1.6:5555
scrcpy -s 192.168.1.6 -p 5555
adb disconnect 192.168.1.6:5555

動作がぬるいのをオプションで改善してみる(※参考バッチ)

scrcpyのドキュメントを見ると、デフォルトだと8M/bで通信しているらしい。
ここを2M程度にすると反応がよくなった。
さらに画面解像度を1024辺りに制限すると更によくなった気がする。
ただし画面は粗い。
Surfaceと上述のぬるいxperiaで使ってみたが、無線LAN←→無線LANでも動作遅延が許容できるレベルに。

複数記述例あると混乱するので、すべて盛り込んだバッチはこちらのセクションに移動

@@xperia.bat
cd /d "C:\Users\xxx\OneDrive\sync\scrcpy"
::
adb connect 192.168.1.5:5555
scrcpy -s 192.168.1.5 -p 5555 --bit-rate 2M --max-size 1024
::pause
adb disconnect 192.168.1.5:5555

最近のアップデートからプチフリするようになってきた→解決(※旧情報)

当方の環境だと、2月くらい?1月?のアップデート辺りから、特定の環境でプチフリーズするようになっていた。
3秒ごとくらいにscrcpyの窓が少し固まる。
Ryzen+RadeonのデスクトップPCだとOS切り変えてもだめで、Intel coremのタブレットPCだと快適に使えていた。

githubのissuesを見るとプチフリについてのスレッドがあった。

https://github.com/Genymobile/scrcpy/issues/425
最近スレッドに進展があったようなので対策を試してみた。
内容はよくわからないがSDL2.dllがscrcpy1.5から変わったから古いのを試してみろと言ってる気がする。
https://www.libsdl.org/download-2.0.php
ここからURLをごにょって、一個古いバージョンに置き換えてDLする。上からWin32bitOS、64bit、Mac用。
https://www.libsdl.org/release/SDL2-2.0.8-win32-x86.zip
https://www.libsdl.org/release/SDL2-2.0.8-win32-x64.zip
https://www.libsdl.org/release/SDL2-2.0.8.dmg

scrcpyを終了してそのままSDL2.dllを置き換え。
scrcpyを再起動してみるとプチフリ解決。デスクトップPCでも快適になった。
環境が原因かはわからないが、とりあえず解決。

Windowsの次期アップデートでAndroidアプリを使えるようになる?

こんなニュースも見かけてはいたが、いつ出てくるか分からない。

続報きました

続報がきたようです。
ただ、scrcpyよりかなり動作条件が厳しいようです。

Bluetooth LEをサポートするWindows PCと、Android 7.0以上で動作するスマートフォン

Windows 2in1 PCのタッチパネルで操作がしづらい?

v1.10から普通に長押しできるようになった模様。

一見、Winタッチパネル+Androidタッチパネルなので問題なさげだが致命的な問題がある。
長押しができないのだ。長押しするとWindows側の長押しが優先され、Windowsの右クリックが発動してしまう。
これの回避策を発見したので書いておく。

「ダブルタップ&ホールド」するとAndroid窓側で長押し判定される
2回目のタップで指を離さないこと

利用シーン

Android端末を非root化でVNCできると用途に幅がでますね。

わざわざ端末を充電器から外して・・とやる必要がないのでゲームのデイリー消化にも。
ゲームは録画できるので何かと重宝できそう。音は別途LineInジャックとかで引き回す必要ありそうですが。。

あと、遅延が気になりだすと、Android端末に接続するOTG対応の有線LANアダプタが欲しくなる。
手持ちはAndroidバージョン古かったり有線LAN非対応端末だったり、
Android5以上で有線LAN対応端末で、、と探し出すと新しいものが欲しくなるのが辛い。

参考URL

https://github.com/Genymobile/scrcpy
https://blog.c6h12o6.org/post/freebsd-android-scrcpy/
https://www.moongift.jp/2018/04/scrcpy-android%E7%AB%AF%E6%9C%AB%E3%82%92pc%E3%81%8B%E3%82%89%E6%93%8D%E4%BD%9C/

qiita内で似たようなことを実現している方々の記事リンク

ASM(Android Screen Monitor)使ってみた
https://qiita.com/TK223/items/5d260ad976071449240c

【Vysor】開発中のAndroidアプリを別の人のPC上で操作してもらう
https://qiita.com/shota_low/items/9b6458b58f55ad944479

Android 端末画面を Windows に表示/操作可能な Android Control の使い方
https://qiita.com/aoi70/items/404f63161b12be016420

ワイヤレスでWindows/MacをAndroid/iOSデバイスにミラーリングして、操作する方法
https://qiita.com/salaryman/items/08a74d0dc35238dad0b7

Android の画面を PC に転送する Mobizen が凄い
https://qiita.com/ytabuchi/items/f00545fa7618460491a0

Windows + Android(iOS)端末でフリーなマルチディスプレイ環境構築
https://qiita.com/dwarfJP/items/2e1491e8144355e6d7f9

ooba1192
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした