November 6, 2019 update:
  • There's a new open source Cardboard SDK for iOS and Android NDK that offers a streamlined API, improved device compatibility, and built-in viewer profile QR code scanning. A corresponding Unity package (SDK) is planned for a future release. We recommend that all developers actively building for Google Cardboard migrate (iOS, Android NDK) to the new Cardboard SDK.
October 15, 2019 update:
  • The Daydream View VR headset is no longer available for purchase. However, you can continue to use the existing Google VR SDK to update and distribute your apps to the Google Play Store, and make them available to users in the Daydream app.

Getting started with 6DoF controllers in the Android NDK

This guide shows you how to set up Google VR development with the Android NDK and build the HelloVRBeta sample app. This app is designed to help you learn about working with the see-through mode technology as well as the experimental 6DoF controllers and faceplate.

  1. Download and install the latest version of gvr-android-sdk\*.zip from the releases page.
  2. Follow these steps to build and run the HelloVRBeta sample app. The requirements and steps to build the sample app using the NDK are nearly the same as building the HelloVR sample app for the SDK, with the following key changes:

    1. Download the latest version of the Android NDK.
    2. Extract the NDK .so files by running:

        ./gradlew :extractNdk
      
    3. In settings.gradle, uncomment the following line:

        include ':samples:ndk-hellovrbeta'
      
    4. To build and run the sample app in Android Studio, select samples-ndk-hellovrbeta as your target.

If you're familiar with developing for Daydream, here are the changes you need to make in order to support the 6DoF controllers and faceplate:

  • To identify your app as supporting the 6DoF controllers and faceplate, add the following meta-data tag to your AndroidManifest.xml file within the <activity> element:

    <activity …
    
      <meta-data android:name="com.google.vr.controllers.supportedConfigs" 
      android:value="3Dof|2x6Dof"/>
    
    </activty>
    
  • Make sure your gvr_controller_create_and_init() call specifies GVR_CONTROLLER_ENABLE_POSITION; otherwise, the position data will be discarded.

Using the controllers after setup

Fluorescent lighting and HTC Vive Lighthouses are both known to interfere with tracking. Turn off the Vive Lighthouse if you have one, or move to a room with different conditions.