OculusGo/Questのアプリを外部から無線で立ち上げる方法

イベントのデモなんかで体験者にアプリ起動方法を説明するのがメンドイので、なんとかできんかなぁと思ってたら普通にできたので、残しておきます。


準備

Oculus Go / QuestとPCをUSBで有線接続し、adbを実行できる状態にしておきます。

adbを実行するための環境はこれを読んでる方なら大体終わってると思うので割愛します(ネット上にいくらでも書いてあるし)


adbコマンドを打ち込んでいく


1. デバイスのIPアドレスを取得


cmd.bat

adb shell ifconfig wlan0


出力に"inet addr:192.168.x.x"みたいなのが出るのでそれがデバイスのIPアドレスです。

↓で使うのでコピーしておく。


2. TCP/IP接続


cmd.bat

adb tcpip 5555

adb connect 192.168.x.x:5555

上記connectが成功するとwifi経由でデバイスに対してコマンドを送れるようになったので、PCとデバイスのUSB接続を切断しておkです


3. 実行するアプリケーションのパッケージ名を取得する


cmd.bat

adb shell pm list package


これはビルド時に自分で命名しているので、わかっている場合は飛ばしておk。

売り物のアプリでパッケージ名が分かりませんってな時にでも使ってください。

上記を実行するとデバイス内にインストールされたパッケージ名の一覧がドバーっとでるので

その中からお目当ての物を自力で探してください。


4. 実行するアプリケーションのクラス名を取得する


cmd.bat

adb shell pm dump パッケージ名


上記を実行すると、これまたドバーっと色々情報が表示されて嫌になりますが、見るのは上記を実行した行の上から5行目辺りだけ。


cmd.bat

adb shell pm dump パッケージ名

DUMP OF SERVICE package:
Activity Resolver Table:
Non-Data Actions:
android.intent.action.MAIN:
xxxxxxx パッケージ名/クラス名 filter xxxxxxx // ←ここ
Action: "android.intent.action.MAIN"
Category: "android.intent.category.INFO"
AutoVerify=false

上記の「パッケージ名/クラス名」の部分に書かれている文字列をコピペしておいてください↓で使います。filter xxxとかは要りません。

ちなみに、クラス名はUnityでOculusGo/Quest向けにビルドしている場合はcom.unity3d.player.UnityPlayerActivityになります。

なので、毎回この手順が必要というわけではないです。


5. アプリを実行する


cmd.bat

adb shell am start -n パッケージ名/クラス名


はい。これでOculusGo /Quest でアプリを外部から無線で立ち上げられたはずです。ヤッター


6. アプリを終了する

adb shell am force-stop パッケージ名

上記でアプリを強制終了できる