Oculus Quest を ipアドレスで接続して楽々ケーブルレス開発

Oculus Quest(もしくはGO)向けアプリ開発をしていると、

1.開発
2.APK作って
3.USBケーブル接続
4.流し込んで
5.USBケーブル取り外し
6.OculusQuest装着
7.テスト
8.:thinking:
↓
1.開発
・・・

この繰り返しなわけですが、
この**３．**および**５．**の**「USBケーブル接続・取り外し」**が何気に面倒ですし、「こんなにUSB抜いたり指したりして大丈夫・・・？」って不安になったりします。

その為、ADB接続(Android Debug Bridge？）をUSBケーブルの有線から、無線LANのIPアドレスによる無線接続にするのがおすすめです。

# IPアドレスによる接続
そのためには、OculusQuestに割り当てられているIPアドレスを知る必要があります。
頑張って端末自体に固定IPを振る方法や、ルーターの方のDHCP設定で固定的に同じIPを振るように設定する方法などありますが、どれもちょっとハードルが高いです（OculusQuest開発する時点でハードルは高いわけですけども）

そこで、こんなバッチを用意しました（もちろんWindows専用です)

```text:adb_connect_ip.bat
for /F "usebackq delims=" %%s in (`adb shell "ifconfig wlan0 | grep 'inet addr:' | sed -e 's/^.*inet addr://' -e 's/ .*//'"`) DO set ip=%%s
echo %ip%
adb tcpip 5555
adb connect %ip%:5555
adb devices
pause
```

前提として

- adbコマンドがコマンドプロンプト上で打てる
- USBケーブルでOculusQuestがつながっている
- OculusQuestが開発者モード
- OculusQuest上でUSB接続を許可している

状態です。　つまり、普通のUSB接続による開発はできている状態。

最終的に、コマンドプロンプトの画面に

```text
List of devices attached
xxx.xxx.xxx.xxx:5555      device 
```
と出ていれば、IPアドレスによる接続成功です。（場合によっては、USB接続とIPアドレス接続の2つでるかも）
これ以降はUSBケーブル外しても大丈夫です（逆に、USBケーブルは外さないとちょっと困ります。　詳しくは後ほど）

何回かやってみて「これ、最後にコマンドプロンプト（黒い画面）残るの嫌だな」という人は、最後の行の `pause` を削ってください。

## やっぱりUSBケーブル接続に戻す

やっぱりUSBケーブル接続に戻そう。　として上のIPアドレスによる接続した状態で、USBで接続しなおす（またはIP接続した後USBケーブル接続したままにする）と

- IPアドレスによる接続
- USBケーブルによる接続

の２つが接続された状態になってしまい、直接adbのコマンドを打つ場合に毎回デバイスを (`-s`)指定しなくてはいけなくなり、面倒になります。

そんなときは以下のコマンドを。

```text:disconnect.bat
adb disconnect
```

IPアドレス接続が切断されます。

#おまけ

##スクリーンショットを取得してダウンロード、表示

```text:screenshot.bat
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set tm=%time:~0,8%
set tm=%tm: =0%
set hh=%tm:~0,2%
set tt=%tm:~3,2%
set ss=%tm:~6,2%

set fileName=%yyyy%%mm%%dd%%hh%%tt%%ss%

adb shell screencap -p /sdcard/screen%fileName%.png
adb pull /sdcard/screen%fileName%.png
adb shell rm /sdcard/screen%fileName%.png
start screen%fileName%.png
```

このbatファイルを置いて、起動すると、起動した場所に画面のスクリーンショットを日付付きファイル名で取得し、勝手に開きます。

![65c10286baee530b109bc03b46713b1e.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/37184/8f8f3a91-0a30-421e-07cb-dd7acc5a4cff.gif)


「いや、勝手に開かなくていいんだよ」
という方は、最後の行の

```text
start screen%fileName%.png
```

 を削ってください。

##動画取得、ダウンロード、再生

```text:moviecap.bat
set yyyy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
set tm=%time:~0,8%
set tm=%tm: =0%
set hh=%tm:~0,2%
set tt=%tm:~3,2%
set ss=%tm:~6,2%

set fileName=%yyyy%%mm%%dd%%hh%%tt%%ss%

adb shell screenrecord /sdcard/screen%fileName%.mp4
adb pull /sdcard/screen%fileName%.mp4
adb shell rm /sdcard/screen%fileName%.mp4
start screen%fileName%.mp4
```

このbatファイルを置いて、起動した場所に画面キャプチャ動画(mp4)を取得し、勝手に開きます。
なお、動画の取得時間は最大で3分（だったはず）かつ、音声は入りません。
また、動画取込を途中で止めたい場合は `Ctrl+C` で中断です。
その際に

```
^Cバッチジョブを終了しますか(Y/N)?
```

と出ますが、ここで Y を選択するとバッチ自体が中断してしまい、ファイルのダウンロード（および、後始末の削除）まで処理されないので、 N を選択するようにしてください。

まぁ、OculusQuest被りながらここら辺をやるのはほぼ無理なのであんまり使いどころはありませんけどね。（なのでおまけ）

そして、これまた
「いや、勝手に開かなくていいんだってば」
という方は、最後の行の

```text
start screen%fileName%.mp4
```
を削ってください。

## apkのInstall
野良APKを拾ってきてインストールしたい場合なんかは

```text:apk_install.bat
adb install -r %1
pause
```

上記BATファイルにAPKファイルをドラッグアンドドロップしてください。インストールされます（多分）
「最後のpauseいらなくない？」という方は（以下略）

#最後に
macの人にはなにも意味がない記事ですね。「これはmacでもあると有用だな。」と思ったmac使いの方はmacの場合のコマンド教えていただけるとありがたいです。
では、良きOculusQuestライフを。