Google VR SDKを使う

## Gradle依存関係の指定

build.gradleに以下の依存を記述するだけでGoogle VR SDKをAndroid Studioプロジェクトに追加することができます。

```groovy
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のリリースページ](https://github.com/googlevr/gvr-android-sdk/releases)で確認してください。

毎回全てが必要なわけではありません。
たとえばVRのレンダリングのみが必要であれば`com.google.vr:sdk-base`だけで良いです。
空間音響だけ使いたければ`com.google.vr:sdk-audio`だけを使うこともできます。

## AndroidManifest.xmlの記述

※空間音響のみを使う場合は、これらの指定は必要ありません。

Google VR SDKを使う場合はAndroidManifest.xmlにもいくつか追加の記述が必要です。

### Activity属性

Daydream対応のActivityには以下の属性を宣言する必要があります。

```xml
<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しかサポートしないなら、宣言は次のようになります。

```xml
<!-- 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`カテゴリーも宣言します。

```xml
<!-- 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`のみを宣言します。

```xml
<!-- 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>
```