LoginSignup
3
6

More than 5 years have passed since last update.

Google VR SDKを使う

Last updated at Posted at 2017-02-07

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:resizeableActivityfalseにすることで他のActivityとスクリーンを共有するためにリサイズできないようにします。

プラットフォーム互換

それぞれのActivityはどのVRプラットフォームをサポートするかを宣言しなければいけません。(DaydreamかCardboard、または両方か)
これはDAYDREAMCARDBOARDのカテゴリーを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>
3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6