2022-06 << 2022-07 >> 2022-08

2022-07-16 (土)

* Oculus QuestのブラウザをGoから操作する

Oculus Browserでbookmarkletやアドレスバーからスクリプト実行できなくなってしまったのでADB経由で操作する.PCのChromeから操作できるけど,開いているタブを監視して,URLがマッチしたら自動的にスクリプトを実行するようにしたい.

Chromeのリモートデバッグで操作可能なのはわかっているので,Chrome DevTools Protocolで通信して操作することにする.Android上ではchrome_devtools_remoteというドメインソケットで待ち受けているらしいので,ADBでforwardする必要がある.

adb forward tcp:9222 localabstract:chrome_devtools_remote

あとは ws://localhost:9222/devtools/browser に繋げば色々出来る.

http://localhost:9222/json にアクセスすればタブの一覧が見れたりする.

Chromeは直接ADB上で何かしてるように見えるけど,ほとんどのDevTools Protocolを扱うライブラリはTCP(というかWebSocket)で接続するっぽい.

今回はとりあえず, https://github.com/chromedp/chromedp というGoのライブラリを使う.

困ったのは,Contextがcancelされると問答無用でタブを閉じてしまう?仕方ないので, 切断前にchromedp.Context.TargetIDを空にして回避.

あとは,ADBをネットワーク越しに使うために,Questを再起動すると adb tcpip しなおさないといけないのをどうにかしたい...

2022-06 << 2022-07 >> 2022-08