はじめに

そのうちQiitaにまとめたいけど、ちょっと纏めるまでの間にいろいろありそうなので、こちらにチェックポイントを書いていこうかな。

前提知識

やりたいこと

Live Coding de Nightの出し物を制作する。 CardboardのAPIを使ってミクさんを視姦したい。

検証

ログを見る

Nexus5(Android 4.4.4)で検証。

MainActivity.java を作成し、Logcatを追跡してみた。CardboardView.StereoRendererでimplementした部分を中心に。

08-18 15:40:49.809  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onSurfaceCreated()
08-18 15:40:49.809  19749-19767/net.pside.android.sample.cardboard W/CardboardView﹕ Surface size 1794x1005 does not match the expected screen size 1920x1080. Rendering is disabled.
08-18 15:59:02.845  21494-21521/net.pside.android.sample.cardboard D/MainActivity﹕ onSurfaceChanged(897,1005)
08-18 15:59:02.915  21494-21521/net.pside.android.sample.cardboard D/MainActivity﹕ onSurfaceChanged(960,1080)

08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onNewFrame()
08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onFinishFrame()

// ...

08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onNewFrame()
08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onFinishFrame()

// ...

08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onNewFrame()
08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onDrawEye()
08-18 15:40:49.919  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onFinishFrame()

08-18 15:41:06.229  19749-19749/net.pside.android.sample.cardboard W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection
08-18 15:41:06.299  19749-19767/net.pside.android.sample.cardboard D/MainActivity﹕ onRenderShutdown()

気付き

  • onSurfaceChanged(int, int)は、Immersive Modeに移行した時に描画領域が大きくなるので呼ばれているみたい。
  • onNewFrame() -> onDrawEye() -> onDrawEye() -> onFinishFrame() の順にコールされる。onDrawEye()が2度呼ばれるのは、右目、左目、とレンダリングするため。どっちがどっちという情報はたぶん引数で渡されるオブジェクトにでも入ってるんだろう。
  • バックキーを押すとonRenderShutdown()がコールされた。別にバックキーに限定されず、RenderがShutdownされるときに呼ばれるんだろう(?)