VR」カテゴリーアーカイブ

VR

Oculus Quest も文章書き&開発マシンにする

Oculus Go に続いて上位機種 Oculus Quest が登場しました。両手のモーションコントローラ含めてポジショントラッキングに対応しており、スタンドアロンながら 6.6DoF のフルスペック VR になっています。

Oculus Quest にも Oculus TV が入っており、以前作成した TVLauncherGo がそのまま使えるようです。Oculus Go と同じように Oculus TV 上で Android アプリが動きました。

・設定アイコンから Bluetooth Keyboard の接続
・同じく設定から物理キーボードのキーレイアウト変更
・UserLAnd を使って Linux をインストール
・VNC アプリの起動 (制限あり)

などなど一通りうまくいっています。UserLAnd が動けば、開発環境や日本語入力環境の構築ができます。

つまり Oculus Quest と Bluetooth Keyboard を持ち歩けばどこでも大画面で作業に没頭できるようになるわけです。

Oculus Quest + UserLAnd + Ubuntu + bVNC

ちなみに開発環境には Termux も併用しています。Termux 自体は TVLauncherGo がなくても動きます。(併用する理由はこちら)

● Oculus Quest の速度

Oculus Go よりも性能が上がってだいぶ快適になりました。下記の表は Termux 上でのコンパイル速度の比較です。Quest は Go よりも 2.6 倍速くなっています。

VR あり VR利用 SoC RAM Thread Time
Daydream + Pixel 3 あり Snapdragon 845 4GB 8 72
Oculus Quest あり Snapdragon 835 4GB 8 105
Oculus Go あり Snapdragon 821 3GB 4 275
Daydream + ZenFone AR あり Snapdragon 821 8GB 4 349
VR なし VR利用 SoC RAM Thread Time
Pixel 3 無し Snapdragon 845 4GB 8 32
Essential Phone 無し Snapdragon 835 4GB 8 38
ZenFone 3 Max ZC553KL 無し Snapdragon 430 3GB 8 100
ZenFone AR ZS571KL 無し Snapdragon 821 8GB 4 111
Nexus 5X 無し Snapdragon 808 2GB 6 135

・Time の単位は秒。値が小さい方が高速。

当然ながら VR を使わない状態だともっと高速です。同じ SoC を搭載した機種同士で比べると、VR 空間上でのコンパイルは通常の状態より 2.5 倍前後遅くなっています。それだけ VR の描画は負荷が高いわけです。

Quest の結果は VR 無しの ZenFone AR (Snapdragon 821) や ZenFone 3 Max (Snapdragon 430) とほぼ同じくらいになっています。VR 上で素の Snapdragon 821 や Snapdragon 430 が動いていると思えば速度のイメージが掴めるのではないでしょうか。

比較用に Daydream も試しましたが、Snapdragon 845 の Pixel 3 は速いものの画面解像度が低く実用には厳しいものがありました。XL ならちょうど良いのかもしれません。Zenfone AR はビルド中、発熱のためか処理落ちが多く不安定でした。やはり専用機である Oculus Go や Quest は解像度が高く画面端の歪みもなく安定しています。

●持ち歩きやすさ

可搬性に関しては Go の方が上です。性能が上がりサイズと重量が若干増えたのもありますが、バンドがしっかりした作りになったため Go のように折り畳めなくなっています。また場所が変わると毎回ガーディアン設定が出てくるので、使うまでにひと手間かかります。

Oculus Go と Oculus Quest

●ポジショントラッキング

ポジショントラッキングのおかげで VR 内での見え方はかなり自然になりました。スクリーンに近づいたり離れたりできるので、文字が小さくて見えにくい場合も近寄れば読むことができます。ただしガーディアン範囲を抜けると外部カメラ映像に切り替わってしまうので、大きく動く場合はルームスケールの範囲設定が必要。

●環境設定など

Go とはコントローラが違いますが使うボタンは限られています。Oculus TV で前の画面に戻るには (B) ボタンを使います。

Oculus TV で前の画面に戻る操作
・Oculus Go : メニューボタン
・Oculus Quest : 右コントローラの (B) ボタン

(1) TVLauncherGo の apk を install

(2) Oculus TV → TVLauncherGo → 設定アイコン → Bluetooth
 ・ Bluetooth キーボードを接続
 ・ 必要に応じてレイアウト選択
  ・ 設定の言語→キーボードレイアウト
  ・ (「106/109106/109ハードウェアキーボード配列変更 (+親指Ctrl) [日本語配列]」が使えます。

(3) UserLAnd の apk を install

(3) Oculus TV → TVLauncherGo → UserLAnd
 ・Linux install (SSH を選択)

下記の記事も参考にしてください。
Oculus Go を文章書き&開発マシンにする
Oculus Go で一般 Android アプリを起動できるランチャーを作ってみた

● VNC を使う場合

UserLAnd が bVNC Free 以外の client にも対応したため手順が若干変わりました。Real VNC Viewer を使う場合でも UserLAnd が直接呼び出してしまうため、一旦停止させてから Oculus TV 経由で起動する必要があります。そのかわり複数の VNC client を入れることで起動をキャンセルできます。

以下は「環境設定など」の続きです。

(1) Real VNC Viewer の apk を install

(2) Oculus TV → TVLauncherGo → UserLAnd
 ・ Linux Distribution 名長押しで VNC に変更

(3) Linux を起動すると画面真っ黒でロード待ちになるので、右コントローラの Oculus Button で戻る
 ・Real VNC Viewer は大丈夫ですが、bVNC だとここで戻れないので再起動になります。

(4) 右コントローラの (B) ボタンで TVLauncerGo に戻り強制停止する
 ・VNC Viewer アイコン長押しで「アプリ情報」の画面を開く (設定→アプリ→VNC Viewer でも構わない)
 ・VNC Viewer アプリを強制停止する (起動した状態を一旦クリアするため)

(5) TVLauncerGo に戻る

(6) あらためて VNC Viewer を起動し、下記の設定で接続する
  ・ HOST: 127.0.0.1
  ・ PORT: 5951

(7) VNC 接続時にパスワードを聞かれるので、UserLAnd の Linux アカウント作成時に設定した VNC Password を入れる

最初は画面が Native 解像度になっているので ~/.vncrc を書き換えて調節してください。1280×720 推奨。

UserLAnd の日本語環境設定についてはこちらを参考にしてください。

なお Real VNC Viewer は比較的安全に起動できますが、モーションコントローラでのマウス操作には難があります。ウィンドウなどドラッグ移動できないのと、ちょっとしたブレでタスクバーのメニューが開かないなど制限があります。少々手間がかかりますが bVNC を使う方法があります。

● VNC を使う場合 (bVNC)

UserLAnd からの呼び出しをキャンセルするために、Real VNC Viewer と bVNC の両方を install しておく必要があります。必ず Bluetooth Keyboard を接続しておいてください。

(1) Real VNC Viewer の apk を install

(2) bVNC の apk を install

(3) Oculus TV → TVLauncherGo → UserLAnd
 ・ Linux Distribution 名長押しで VNC に変更

(4) Linux を起動すると VNC client 選択画面になるので、Bluetooth Keyboard の [ESC] を押してキャンセル

(5) 右コントローラの (B) ボタンで TVLauncerGo に戻る

(6) TVLauncerGo から bVNC を起動

(7) 下記の設定で接続する。右上の [CONNECT] を押す
  ・ HOST: 127.0.0.1
  ・ PORT: 5951
  ・ Linux アカウント作成時に入力したユーザー名とパスワード

(8) つながったら bVNC の設定メニューから 「Input Mode」 → 「Direct, Hold Pan」 を選択する

これでモーションコントローラだけでウィンドウ操作もできるようになります。タスクバーのメニューも簡単に開きます。

Oculus TV を経由せずに UserLAnd が直接 bVNC を起動してしまうと操作できなくなるので注意してください。

関連ページ
Android の上の開発環境
HMD VR / AR Device spec 一覧

関連エントリ
Android UserLAnd の更新と VNC 画面設定
UserLAnd : Android 9.0 で Ctrl + SPACE を使えるようにする
Android Termux で日本語入力を行う / UserLAnd との併用
Android 9.0 と Bluetooth Keyboard による日本語入力
Android/Oculus Go/Daydream の画面をミラーリングするツールを作ってみた
Oculus Go で一般 Android アプリを起動できるランチャーを作ってみた
Oculus Go を文章書き&開発マシンにする
UserLAnd とブラウザ
Android 上の開発環境と UserLAnd
OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
Oculus Go は VR ができる新しい携帯ゲーム機

VR HMD の分類表

VR 機器の種類が増えたのでわかっている範囲で大まかに分類してみました。

(1) 頭 ポジショントラッキングあり 回転のみ
(2) 手 ポジショントラッキングあり 回転のみ
(3) 外部に PC (PS4) が必要 スタンドアロン (Mobile SoC)
(4) 外部センサーあり 外部にセンサーを設置する必要なし
Oculus Rift Quest Go
HTC Vive Vive/Pro (*1) Cosmos Focus Plus Focus
Sony PSVR
Samsung Odyssey GearVR
MS Windows MR
Google Mirage Solo Daydream

(1)/(2) ポジショントラッキングがあるかどうか

VR 空間を自由に歩く Room Scale に対応するにはポジショントラッキングが必要です。外部にトラッキング用のセンサー設置が必要なタイプと、内蔵のカメラだけでトラッキングできるインサイドアウト方式の 2種類があります。

(3) PC が必要かどうか

外部に PC が必要なタイプはモニタ相当です。ケーブルで Host PC (PS4) に接続する必要があります。性能が高く画質も良いですがプレイ中はケーブルがじゃまになりがち。

スタンドアロンタイプはケーブルが不要で PC と繋がなくても単体で使うことができます。手軽に使える半面、描画などの処理能力はスマートフォン相当になります。

(4) 外部にセンサーの設置が必要かどうか

「外部センサーあり」の場合は、トラッキングためにカメラなどのセンサーを部屋に設置しておく必要があります。HMD だけでなくセンサーのためのケーブルも必要で、事前の準備に少々手間がかかります。

(*1) HTC Vive / HTC Vive Pro は同じグループの中でも少々別格です。部屋にベースステーションの設置が必要ですが厳密にはセンサーではなく、どちらかといえばマーカーに近いものです。そのため PC とのケーブル接続が不要で、バックパック型 PC を使うとスタンドアロンタイプのようにも使えます。またポジショントラッキング対応のコントローラを 10個以上同時に利用することができます。手だけでなく足など全身のトラッキングも実現できます。

関連ページ
HMD VR / AR Device spec 一覧

関連エントリ
Gear VR のヘッドセットの種類のまとめ
各種 VR HMD と Volume 調節の仕方まとめ
VR で物が大きく見えたり小さく見えたりするわけ
Oculus Go は VR ができる新しい携帯ゲーム機
Oculus Go と VR デバイスの種類
Windows MR で Fallout 4 VR (Dell Visor)
Google Daydream View (2017) 新型
Windows Mixed Reality Dell Visor (VR HMD)
ASUS ZenFone AR (Daydream/Tango)
Gear VR Controller
HTC Vive のセットアップと PC スペック、遅い PC で動くかどうか
HTC Vive (VR ヘッドマウントディスプレイ) の接続

Android/Oculus Go/Daydream の画面をミラーリングするツールを作ってみた

HTC Vive や Oculus Rift など、PC 向け VR HMD ではモニタ画面にもゲームの映像が出ます。周囲からも VR 内部がどんな状態なのかある程度は見えるようになっています。モバイルやスタンドアロンタイプの VR HMD だと本人にしかわからないので、デモなど人に見せたい場合は何らかの手段が必要です。

Android に標準で用意されている Chromecast や Miracast を使うのが簡単です。Oculus Go の場合もシェアボタンからリンクされているスマートフォンや Chromecast に出力できるようです。

下記は Daydream を Miracast で出力したものです。モニタ直撮り。使用した Miracast アダプタは Microsft Wireless Display Adapter

Miracast

また Windows 10 には Miracast 機能があるので、アダプタがなくても Wi-Fi があれば直接 PC に表示することができます。

(1) 設定→システム→この PC へプロジェクション

 「セキュリティで保護されたネットワーク上のどこでも利用可能」

(2) スタートメニューから「接続」というアプリを起動。

この状態で HDMI の Miracast アダプタと同じように繋がります。なおこの PC は Wi-Fi を内蔵していますが LAN には有線接続しました。(Wi-Fi は Miracast 専用)

↓実際に ZenFone AR + Daydream でつないだところ。(Pixel 3 は Miracast 非対応でした)

Windows10 Miracast

他にもアプリを使う方法があります。様々なサイトで Vysor というソフトが紹介されていました。このソフトは画面のミラーリングだけでなく PC から操作もできるようです。

ただし接続に adb を使っており開発者モードを有効にする必要があります。ワイヤレス接続も adb の tcp 接続を使っているようです。

VR では PC からの操作は不要なのと、adb を使うなら python で作れそうな気がしたので作ってみました。

GitHub: android_mirrortool

下記は android_mirrortool を使って Oculus Go を Windows PC にミラーリングしたところです。

android_mirrortool

Android には画面を録画する機能があります。それを adb 経由でストリーミングしているだけです。python の opencv を使っています。音は出ません。Windows と Linux で動きます。

● Windows の場合

(1) Android SDK を install し adb.exe にパスを張っておく

  AndroidStudio をそのまま install した場合はこの辺です。
  C:/Users/<USERNAME>/AppData/Local/Android/sdk/platform-tools

(2) python 3.x を install

(3) パッケージ pywin32 と opencv-python を install する

pip をを使ってインストールする場合

pip3 install pywin32
pip3 install opencv-python

●使い方

(1) 開発者モードにして adb でつないでおきます。

(2) 「 python android_mirror.py 」を実行します。

画面に動きがないと Mirror Window が表示されないので最初はいろいろ操作して画面を動かしてみてください。終了は ESC キーです。

デフォルトで Full HD になります。VR が処理落ちする場合、または Wi-Fi で adb 接続する場合はレートやサイズを落としてください。

python android_mirror.py --bitrate 4m --size 1280x720

●Linux の場合

下記の操作は Debian 系

$ sudo apt install python3 python3-pip
$ pip3 install opencv-python
$ sudo apt install adb

開発者モードにして adb でつながったら

$ python3 android_mirror.py

●スクリーンキャプチャ

-c をつけるとスクリーンキャプチャになります。png で保存します。

python android_mirror.py -c

関連エントリ
Oculus Go で一般 Android アプリを起動できるランチャーを作ってみた
Oculus Go を文章書き&開発マシンにする
Gear VR のヘッドセットの種類のまとめ
Oculus Go は VR ができる新しい携帯ゲーム機

Oculus Go で一般 Android アプリを起動できるランチャーを作ってみた

前回 Oculus Go で UserLAnd を呼び出せるアプリを作ったのですが、せっかくなので何でも呼び出せるように普通のランチャーアプリも作ってみました。Oculus Go 上で様々な Android アプリが動きます。

TVLauncherGo TVLauncherGo

任意の Android アプリを apk で直接 Install するだけで↑のようにランチャー画面にアイコンが並びます。

もちろん前回の TVWrapperUL 同様 UserLAnd や VNC Viewer、Android 設定画面も呼び出せます。(前回の記事はこちら「Oculus Go を文章書き&開発マシンにする」)

↓Firefox

Firefox

↓AnyDesk で Windows 10 にログインしてさらに VMWare で Ubuntu

AnyDesk

↓Kindle も動きましたがテキストタイプの書籍はフォントサイズが大きすぎます。ページを画像データとして持つ雑誌や漫画のような本は大丈夫そう。サイズ調節が難点。

Kindle

Amazon App Store が動きました。ただし事前に提供元不明アプリのインストールを許可しておく必要があります。(詳細はあとで)

Amazon App Store

●TVLauncherGo Install 方法

Oculus TV 上で動くランチャーです。下記からダウンロードした TVLauncherGo の apk を install してください。Oculus TV の中から起動します。

GitHub: TVLauncherGo1.0.apk

例えば adb を使って install するなら

1. Oculus Go を Developer Mode にする
2. Android SDK を install する (adb.exe にパスを通しておく)
3. PC と USB で接続する (必要なら adb ドライバを入れる)
4. adb install で apk をインストールする

adb install TVLauncherGo1.0.apk

TVLauncherGo が入れば、あとは設定画面や内蔵ファイラーが呼び出せるので Oculus Go 本体でアプリインストールもできるようになります。

●使い方

1. Oculus ストアから “Oculus TV” をインストールしておく
2. Oculus TV を起動
3. 画面の下の方にある “TVLauncherGo” を起動する (↓の赤枠)

TVLauncherGo

起動するとインストールされている一般 Android アプリのアイコンが並ぶのでクリックで起動できます。アイコン長押しでアプリの詳細画面に飛ぶのでアンインストールもできます。

●注意点

事前に Bluetooth Keyboard をペアリングしておくことをお勧めします。ペアリングは Oculus TV → TVLauncherGo → 設定 → Bluetooth から行ってください。

TVLauncherGo 経由ではなく、アプリが直接他のアプリを呼び出してしまう場合があります。VR 空間ではなく 2D でアプリやダイアログが表示されると Controller では操作できなくなるので注意が必要です。Keyboard があれば [ESC] や [Enter] キーで脱出できるかもしれません。

●一般の Android Apk をインストールする方法

さまざまな方法が使えます。

・adb で PC 経由で install
・Dropbox などオンラインストレージ経由で転送して、内蔵ファイラーでインストール
・Amazon などストアアプリ経由のインストール

など。

ブラウザで直接ダウンロードできる場合もありますが apk のインストールに関しては自己責任でお願いします。

●adb を使った PC 経由の install

Oculus Go が adb でつながっているなら PC から install するのが簡単です。TVLauncherGo.apk と同じように

adb install  アプリ.apk

でできます。

●オンラインストレージ経由での apk 転送

Dropbox のようなオンラインストレージを経由して apk ファイルを転送することもできます。Dropbox 上で apk を直接開かないようにしてください。ダイアログが 2D 描画されてしまい操作できなくなります。

メニューからエクスポートを使って一旦ローカルストレージに保存します。その後内蔵ファイラーを使ってインストールしてください。

●内蔵ファイラーを使ったインストール方法

Oculus Go 上に転送した apk をインストールするには下記の手順に従ってください。

1. インストールを許可

 Oculus TV → TVLauncherGo → 設定 → セキュリティ → 提供元不明アプリのインストールを許可する

2. 内蔵ファイラーを起動する

 Oculus TV → TVLauncherGo → 設定 → ストレージ → 外部メディア

3. apk のインストール

 ファイラーが起動したら、本体ストレージ(Pacific) を選択します。例えば Download フォルダにあるなら Pacific → Download を開きます。apk file をクリックすると install できます。

●ストアアプリ経由のインストール

Amazon App Store を使ったインストールもできます。ただしいくつか注意が必要です。

インストール許可の設定画面が 2D 描画になるので、必ず先に「TVLauncherGo → 設定 → セキュリティ → 提供元不明アプリのインストールを許可する」で許可しておいてください。

Amazon App Store の「インストールしますか」のダイアログが左右の目で矛盾した描画になりますが操作はできます。片目で操作してください。

インストールしたアプリはストアから直接開かないで、一旦戻って TVLauncherGo から起動してください。

●apk ファイルを入手するには

手持ちの Android スマートフォンから install してある apk file を取り出すことができます。apk を取り出す script を作ってみました。

GitHub: apk_get.py

1. PC に Python 3.x を install しておきます。
2. スマートフォンを Developer Mode にして PC と adb と接続します。
3. python apk_get.py を実行します。

python apk_get.py

これでインストールされているアプリの apk file をすべて取り出すことができます。

●VR 空間での起動と Oculus TV での起動の違いについて

VR 空間で直接 Android アプリを起動してしまうと問題が生じることがあります。一度起動して Activity が残っていると、以後 Oculus TV から呼び出しても VR 空間のままになる場合があるので注意が必要です。

(1) 例えば設定画面の場合、↓が VR 空間に直接描画されている状態です。少々わかりにくいですが周囲が真っ暗で部屋がありません。

VR Space

↑この状態だと一部のダイアログで操作できなくなる場合があります。例えば Bluetooth のペアリング削除画面ではまります。また一部の画面で固まったり落ちたりします。アプリ一覧画面、レイアウト変更画面など。

(2) Oculus Go 起動直後に Oculus TV → TVLauncherGo → 設定 で呼び出すと ↓ のようになります。部屋の中にウィンドウが配置されています。

Oculus TV Space

↑こちらは普通の Android と同じ操作が可能でダイアログも問題が出ません。物理キーボードのレイアウト変更もできました。↓

Layout

もし (1) の状態なってしまった場合は、Activity を完全に終了させるために一旦 Oculus Go を再起動することをお勧めします。電源ボタンの長押しでできます。

また前回の記事で書いたような adb コマンドを使った設定画面呼び出しは確実に (1) の状態になるので注意してください。adb を使った起動はしないで Oculus TV (TVLauncherGo) 経由で設定を呼び出すことを強くお勧めします。

外部のアプリを呼び出すアプリにも注意が必要です。Dropbox や Amazon App Store など、外部アプリや設定画面が呼ばれると Oculus TV を経由せずに直接 VR 空間や 2D 描画されてしまう場合があります。

再起動しても画面が真っ暗で操作できなくなったら、近接センサーが中途半端な状態になっている場合があります。Oculus Go の HMD 内部、中央上部の近接センサーに触れてみてください。

関連エントリ
Oculus Go を文章書き&開発マシンにする
Gear VR のヘッドセットの種類のまとめ
Oculus Go は VR ができる新しい携帯ゲーム機

Oculus Go を文章書き&開発マシンにする

Oculus Go にも Bluetooth Keyboard が接続できて、さらに一般の Android アプリが動くらしいと今更ながら知ったので、先人の知恵をお借りしつつ UserLAnd を動かしてみました。どこでも Oculus Go をかぶって大画面で日本語文章書いたりプログラム書いたりできます。
Remote Desktop ではないので Network がなくても単体で使えます。

Oculus Go UserLAnd Oculus Go UserLAnd
↑ Oculus Go で動く Debian の Desktop。Oculus TV は残念ながら画面キャプチャできないので、Oculus Go を覗いたところを無理やり写真に撮っています。

参考にさせていただいた情報
Oculus Go Tips
KILINBOX: Oculus GoでAndroidアプリを動かす

調べてみたらすでに同じようなことを実践している方もいらっしゃるようです。
Oculus GoでスタンドアロンVR作業環境を作った

● Bluetooth Keyboard が使える

adb 経由で Settings 画面を呼び出せば Bluetooth 設定ができるようです。上の参考にさせていただいた Tips ページで直接 Bluetooth 画面を呼び出す方法が紹介されています。

下記のように設定画面の Top を呼び出すことも可能です。(追記 2019/02/06: この方法ではダイアログが操作できない場合があることがわかったので非推奨です。詳細はこちら)

adb shell am start -a android.intent.action.MAIN -n com.android.settings/.Settings

毎回 PC 上で呼び出すのも大変なので、単独で使えるよう設定画面を呼び出すアプリを作成しました。(後述)

● 一般のアプリが動く

通常の Android apk を Oculus Go にそのまま install しても VR に対応していないためライブラリに表示されません。ところが公式アプリの Oculus TV を起動すると、一部のアプリが下の方に表示されていました。選択すると VR 空間の TV の中で実行できるようです。

特に Termux は何もしなくても表示されており、apk install だけでそのまま使うことができました。↓

Oculus Go Termux

どうやら Oculus TV には Android TV に対応したアプリが表示されるようです。AndroidManifest.xml に LEANBACK_LAUNCER を登録しておけば Oculus Go の上で実行できることになります。

Linux 環境を走らせるアプリ UserLAnd には LEANBACK_LAUNCER が入っていないので Oculus TV から見えませんでした。ダミーアプリを作って Intent で呼び出せば Oculus TV の上で実行できそうです。

こちらで紹介されていた TvAppRepo というアプリがまさにそれで、Android TV 用のダミーアプリを実機上で作ることができます。

● UserLAnd を呼び出すだけのアプリを作る

実際にアプリを作ってみます。AndroidStudio で Android TV 向けの空 Project を作ります。Tempalte で Android TV Activity を選択しておき、Activity 起動直後に UserLAnd を呼び出します。

// MainActivity.java
import  android.app.Activity;
import  android.content.ActivityNotFoundException;
import  android.os.Bundle;
import  android.content.pm.PackageManager;
import  android.content.Intent;

public class MainActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        PackageManager manager= getPackageManager();
        Intent it= manager.getLaunchIntentForPackage( "tech.ula" );
        it.addCategory( Intent.CATEGORY_LAUNCHER );
        startActivity( it );
    }
}

これだけでうまくいきました。apk 作ってを Oculus Go に install すると Oculus TV にアイコンが並びます。起動すると Oculus TV の上で UserLAnd が動きました。

Bluetooth Keyboard があれば任意の Linux Distribution を使うことができます。これでテキストエディタ、日本語入力、開発用言語など、様々なものが動きます。

この UserLAnd を呼び出すだけの簡単なアプリをこちらで公開してみました。ついでに Real VNC Viewer と設定画面も呼び出せるようにしています。

GitHub: TVWrapperUL 1.0

● VNC を起動する

LuserLAnd が内部で呼び出している bVNC Free は残念ながら Oculus Go で動きませんでした。VR を無視して全画面表示になってしまいます。代わりに Real VNC Viewer (com.realvnc.viewer.android) が動いたのでこちらを使います。UserLAnd と全く同じように Wrapper アプリで呼び出せるので TVWrapperUL に追加しました。

UserLAnd で動いている tightvncserver の port は 5951 です。VNC Server のアドレスには “127.0.0.1:5951” を指定してください。

● 手順の詳細

(1) Oculus Go を Develoepr mode にして PC と adb で接続します。

(2) TVWrapperUL の apk を Oculus Go に install してください。

adb install TVWrapperUL1.0.apk

(3) Oculus TV から TVWrapperUL を起動。Settings → Bluetooh で Bluetooth Keyboard をペアリングしておきます。

(4) UserLAnd (tech.ula) と RealVNC Viewer (com.realvnc.viewer.android) の APK を adb で Oculus Go に install します

(5) Oculus TV → TVWrapperUL → UserLAnd で起動します。

(6) 任意の Linux Distributon を選択します

 Keyboard を使って Username, password, VNC password を入力。ここでは SSH を選びます

日本語化を行えば、そのまま Console で文章書き環境として利用可能です。

UserLAnd の日本語化や日本語入力環境の解説

↓Ubuntu の Console で日本語入力
null

Desktop (lxde 等) 環境も VNC 経由で使うことができます。

● VNC 接続手順

(1) Oculus TV → TVWrapperUL → UserLAnd

(2) Linux Distributon を選択。User を作って VNC を選択

  すでに SSH で作ってある場合は下記の手順で VNC 切り替えます。

  1. 長押しして Stop App
  2. もう一度長押しして App Info → VNC に切り替え
  3. Distribution 名をクリックすると起動

(3) Client アプリがないと言われるので一旦 OK して、Controller のメニュー(←) ボタンを何度か押して戻る

(4) Oculus TV → TVWrapperUL → RealVNC を選択

(5) 右下の + ボタンを押して New Connection 画面から設定を追加。Address は “127.0.0.1:5951” 名前は任意

(6) (5) で作った設定を選んで CONNECT を押す。User 作成時に決めた VNC Password を入れると繋がります。

Desktop の install 手順、VNC 解像度指定方法などはこちらを参照してください。

● 課題など

Android 設定画面から物理キーボードのレイアウト変更ができませんでした。設定画面が落ちるため。(追記: X11 desktop なら xmodmap による変更は可能) (追記 2019/02/06: Oculus TV + TVLauncherGo から設定を呼び出せばできることがわかりました)

Oculus Go Controller を使ったマウス操作が難しいかもしれません。

Oculus TV 上で起動したアプリは画面キャプチャが禁止されているらしく、画面を保存できなくなっています。ミラーリングも真っ黒な画面です。

(追記 2019/02/06: UserLAnd 以外も呼び出せるランチャーを作りました。詳細はこちら「Oculus Go で一般 Android アプリを起動できるランチャーを作ってみた」)

関連ページ
Android の上の開発環境: UserLAnd

関連エントリ
UserLAnd とブラウザ
Android 上の開発環境と UserLAnd
OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
Gear VR のヘッドセットの種類のまとめ
Oculus Go は VR ができる新しい携帯ゲーム機