Gradle依存関係の指定
build.gradleに以下の依存を記述するだけでGoogle VR SDKをAndroid Studioプロジェクトに追加することができます。
dependencies {
compile 'com.google.vr:sdk-audio:1.101.0' // 空間音響
compile 'com.google.vr:sdk-base:1.101.0' // OpenGLでカスタム描画をするView
compile 'com.google.vr:sdk-panowidget:1.101.0' // 360度静止画を表示するView
compile 'com.google.vr:sdk-videowidget:1.101.0' // 360度動画を表示するView
compile 'com.google.vr:sdk-controller:1.101.0' // Daydreamコントローラー
}
※最新のバージョン番号はGitHubのリリースページで確認してください。
毎回全てが必要なわけではありません。
たとえばVRのレンダリングのみが必要であればcom.google.vr:sdk-base
だけで良いです。
空間音響だけ使いたければcom.google.vr:sdk-audio
だけを使うこともできます。
AndroidManifest.xmlの記述
※空間音響のみを使う場合は、これらの指定は必要ありません。
Google VR SDKを使う場合はAndroidManifest.xmlにもいくつか追加の記述が必要です。
Activity属性
Daydream対応のActivityには以下の属性を宣言する必要があります。
<activity
android:name=".MyActivity"
android:enableVrMode="@string/gvr_vr_mode_component"
android:theme="@style/VrActivityTheme"
android:resizeableActivity="false"
...>
android:enableVrMode
属性はAndroid VRモードを有効にします。この機能はAndroid 7.0 (Nougat)から導入され、ハイパフォーマンスモバイルVRアプリケーションを可能にします。この属性がついていると、システムはActivityをVRモードで実行すべきであると判断します。
上記のandroid:theme
属性はVR内の画面遷移が正しく表示されるようにします。そしてandroid:resizeableActivity
をfalse
にすることで他のActivityとスクリーンを共有するためにリサイズできないようにします。
プラットフォーム互換
それぞれのActivityはどのVRプラットフォームをサポートするかを宣言しなければいけません。(DaydreamかCardboard、または両方か)
これはDAYDREAM
かCARDBOARD
のカテゴリーをActivityのintent-filters
セクションに追加することで行います。たとえば、ActivityがDaydreamしかサポートしないなら、宣言は次のようになります。
<!-- DaydreamのみのActivityの例 -->
<activity
android:name=".MyActivity"
android:enableVrMode="@string/gvr_vr_mode_component"
android:theme="@style/VrActivityTheme"
android:resizeableActivity="false"
... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<!-- ActivityがDaydream Activityであると指定し、Daydream Homeから起動できるようにする -->
<category android:name="com.google.intent.category.DAYDREAM" />
<!-- これはActivityを従来のAndroid 2Dランチャーから起動できるようにする。
ランチャーから直接起動したくなければ削除して良い。 -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
ActivityがDaydreamとCardboardを両方サポートするなら、CARDBOARD
カテゴリーも宣言します。
<!-- Daydream/Cardboard Activityの例 -->
<activity
android:name=".MyActivity"
android:enableVrMode="@string/gvr_vr_mode_component"
android:theme="@style/VrActivityTheme"
android:resizeableActivity="false"
... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<!-- ActivityがDaydream Activityであると指定し、Daydream Homeから起動できるようにする -->
<category android:name="com.google.intent.category.DAYDREAM" />
<!-- ActivityがCardboard Activityであると指定し、Cardboardアプリから起動できるようにする -->
<category android:name="com.google.intent.category.CARDBOARD" />
<!-- これはActivityを従来のAndroid 2Dランチャーから起動できるようにする。
ランチャーから直接起動したくなければ削除して良い。 -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
最後に、もしActivityがCardboardしかサポートしないなら、CARDBOARD
のみを宣言します。
<!-- CardboardのみのActivityの例 -->
<activity
android:name=".MyActivity"
android:enableVrMode="@string/gvr_vr_mode_component"
android:theme="@style/VrActivityTheme"
android:resizeableActivity="false"
... >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<!-- ActivityがCardboard Activityであると指定し、Cardboardアプリから起動できるようにする -->
<category android:name="com.google.intent.category.CARDBOARD" />
<!-- これはActivityを従来のAndroid 2Dランチャーから起動できるようにする。
ランチャーから直接起動したくなければ削除して良い。 -->
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>