diff --git a/.gitignore b/.gitignore
index 65e71c45..2fe78a12 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,9 +2,11 @@
*.iml
.idea/
-# Gradle configuration.
+# Gradle build.
+.externalNativeBuild/
.gradle/
build/
+libraries/jni
# User configuration.
local.properties
diff --git a/apks/controller_emulator.apk b/apks/controller_emulator.apk
index ea89dbe6..336b386b 100644
Binary files a/apks/controller_emulator.apk and b/apks/controller_emulator.apk differ
diff --git a/build.gradle b/build.gradle
index 776eaacd..570427e5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,10 +3,11 @@
buildscript {
// This configures the Gradle build system, but not the GVR components.
repositories {
+ google()
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle-experimental:0.9.3'
+ classpath 'com.android.tools.build:gradle:3.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -15,6 +16,7 @@ buildscript {
allprojects {
repositories {
+ google()
// For GVR components, the official source of the .aars is JCenter.
jcenter()
maven {
@@ -33,13 +35,13 @@ task clean(type: Delete) {
// The dependencies for NDK builds live inside the .aar files so they need to
// be extracted before NDK targets can build.
task extractAudioSo(type: Copy) {
- from zipTree("${project.rootDir}/libraries/sdk-audio-1.130.0.aar")
+ from zipTree("${project.rootDir}/libraries/sdk-audio-1.140.0.aar")
into "${project.rootDir}/libraries/"
include "jni/**/libgvr_audio.so"
}
task extractGvrSo(type: Copy) {
- from zipTree("${project.rootDir}/libraries/sdk-base-1.130.0.aar")
+ from zipTree("${project.rootDir}/libraries/sdk-base-1.140.0.aar")
into "${project.rootDir}/libraries/"
include "jni/**/libgvr.so"
}
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 7a3265ee..c44b679a 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 354f7639..0d0b0412 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-bin.zip
diff --git a/libraries/headers/vr/gvr/capi/include/gvr_types.h b/libraries/headers/vr/gvr/capi/include/gvr_types.h
index c20a3381..0eca4882 100644
--- a/libraries/headers/vr/gvr/capi/include/gvr_types.h
+++ b/libraries/headers/vr/gvr/capi/include/gvr_types.h
@@ -254,15 +254,17 @@ typedef enum {
/// @}
-/// Event data associated with a system-initiated GVR_EVENT_RECENTER event. The
-/// client may wish to handle this event to provide custom recentering logic.
+/// Event data associated with a GVR_EVENT_RECENTER event, which indicates head
+/// tracking recentering. (Controller recentering is signaled separately
+/// through gvr_controller_state_get_recentered().) The client may wish to
+/// handle this event to provide custom recentering logic.
typedef struct gvr_recenter_event_data {
int32_t recenter_type; // gvr_recenter_event_type
gvr_flags recenter_event_flags;
- /// The new transform that maps from "sensor" space to the recentered "start"
- /// space. This transform can also be retrieved by querying for the
- /// GVR_PROPERTY_RECENTER_TRANSFORM property.
+ /// The new transform that maps from headset's "sensor" space to the
+ /// recentered "start" space. This transform can also be retrieved by querying
+ /// for the GVR_PROPERTY_RECENTER_TRANSFORM property.
gvr_mat4f start_space_from_tracking_space_transform;
} gvr_recenter_event_data;
@@ -635,12 +637,12 @@ typedef enum {
/// Type: float
GVR_PROPERTY_TRACKING_FLOOR_HEIGHT = 1,
- /// The current transform that maps from "sensor" space to the recentered
- /// "start" space. Apps can optionally undo or extend this transform to
- /// perform custom recentering logic with the returned pose, but all poses
- /// supplied during frame submission are assumed to be in start space. This
- /// transform matches the one reported in the most
- /// recent gvr_recenter_event_data.
+ /// The current transform that maps from headset's "sensor" space to the
+ /// recentered "start" space. Apps can optionally undo or extend this
+ /// transform to perform custom recentering logic with the SDK-provided poses,
+ /// but the SDK assumes poses supplied during frame submission are in start
+ /// space. This transform matches the one reported in the most recent
+ /// gvr_recenter_event_data.
/// Type: gvr_mat4f
GVR_PROPERTY_RECENTER_TRANSFORM = 2,
@@ -699,7 +701,9 @@ typedef enum {
/// The type of gvr_event.
typedef enum {
- /// Notification that a global recentering event has occurred.
+ /// Notification that head tracking has been recentered. (Note that controller
+ /// recentering is signaled separately through
+ /// gvr_controller_state_get_recentered().)
/// Event data type: gvr_recenter_event_data
GVR_EVENT_RECENTER = 1,
diff --git a/libraries/headers/vr/gvr/capi/include/gvr_version.h b/libraries/headers/vr/gvr/capi/include/gvr_version.h
index 4e303421..6a0d0ffc 100644
--- a/libraries/headers/vr/gvr/capi/include/gvr_version.h
+++ b/libraries/headers/vr/gvr/capi/include/gvr_version.h
@@ -23,14 +23,14 @@ extern "C" {
/// A string representation of the current GVR build version. This is of
/// the form "MAJOR.MINOR.PATCH". Note that this may differ from the runtime
/// GVR version as reported by gvr_get_version_string().
-#define GVR_SDK_VERSION_STRING "1.130.0"
+#define GVR_SDK_VERSION_STRING "1.140.0"
/// Semantic components for the current GVR build version. Note that these
/// values may differ from the runtime GVR version as reported by
/// gvr_get_version().
enum {
GVR_SDK_MAJOR_VERSION = 1,
- GVR_SDK_MINOR_VERSION = 130,
+ GVR_SDK_MINOR_VERSION = 140,
GVR_SDK_PATCH_VERSION = 0,
};
diff --git a/libraries/sdk-audio-1.130.0.aar b/libraries/sdk-audio-1.130.0.aar
deleted file mode 100644
index e4448589..00000000
Binary files a/libraries/sdk-audio-1.130.0.aar and /dev/null differ
diff --git a/libraries/sdk-audio-1.140.0.aar b/libraries/sdk-audio-1.140.0.aar
new file mode 100644
index 00000000..3cd99ea1
Binary files /dev/null and b/libraries/sdk-audio-1.140.0.aar differ
diff --git a/libraries/sdk-audio-1.130.0.pom b/libraries/sdk-audio-1.140.0.pom
similarity index 92%
rename from libraries/sdk-audio-1.130.0.pom
rename to libraries/sdk-audio-1.140.0.pom
index 7e307bde..fb95f76d 100644
--- a/libraries/sdk-audio-1.130.0.pom
+++ b/libraries/sdk-audio-1.140.0.pom
@@ -4,7 +4,7 @@
com.google.vr
sdk-audio
- 1.130.0
+ 1.140.0
aar
Google VR SDK-Audio
@@ -19,7 +19,7 @@
com.google.vr
sdk-base
aar
- 1.130.0
+ 1.140.0
diff --git a/libraries/sdk-base-1.130.0.aar b/libraries/sdk-base-1.130.0.aar
deleted file mode 100644
index e57a3a2b..00000000
Binary files a/libraries/sdk-base-1.130.0.aar and /dev/null differ
diff --git a/libraries/sdk-base-1.140.0.aar b/libraries/sdk-base-1.140.0.aar
new file mode 100644
index 00000000..15a73e8a
Binary files /dev/null and b/libraries/sdk-base-1.140.0.aar differ
diff --git a/libraries/sdk-base-1.130.0.pom b/libraries/sdk-base-1.140.0.pom
similarity index 92%
rename from libraries/sdk-base-1.130.0.pom
rename to libraries/sdk-base-1.140.0.pom
index 7a2cce6c..b111e98c 100644
--- a/libraries/sdk-base-1.130.0.pom
+++ b/libraries/sdk-base-1.140.0.pom
@@ -4,7 +4,7 @@
com.google.vr
sdk-base
- 1.130.0
+ 1.140.0
aar
Google VR SDK-Base
@@ -19,7 +19,7 @@
com.google.vr
sdk-common
aar
- 1.130.0
+ 1.140.0
diff --git a/libraries/sdk-common-1.130.0.aar b/libraries/sdk-common-1.130.0.aar
deleted file mode 100644
index ec5f8e69..00000000
Binary files a/libraries/sdk-common-1.130.0.aar and /dev/null differ
diff --git a/libraries/sdk-common-1.140.0.aar b/libraries/sdk-common-1.140.0.aar
new file mode 100644
index 00000000..be2fb613
Binary files /dev/null and b/libraries/sdk-common-1.140.0.aar differ
diff --git a/libraries/sdk-common-1.130.0.pom b/libraries/sdk-common-1.140.0.pom
similarity index 96%
rename from libraries/sdk-common-1.130.0.pom
rename to libraries/sdk-common-1.140.0.pom
index a943d424..0228bd8d 100644
--- a/libraries/sdk-common-1.130.0.pom
+++ b/libraries/sdk-common-1.140.0.pom
@@ -4,7 +4,7 @@
com.google.vr
sdk-common
- 1.130.0
+ 1.140.0
aar
Google VR SDK-Common
diff --git a/libraries/sdk-commonwidget-1.130.0.aar b/libraries/sdk-commonwidget-1.140.0.aar
similarity index 87%
rename from libraries/sdk-commonwidget-1.130.0.aar
rename to libraries/sdk-commonwidget-1.140.0.aar
index dcc9de6f..fe63574c 100644
Binary files a/libraries/sdk-commonwidget-1.130.0.aar and b/libraries/sdk-commonwidget-1.140.0.aar differ
diff --git a/libraries/sdk-commonwidget-1.130.0.pom b/libraries/sdk-commonwidget-1.140.0.pom
similarity index 92%
rename from libraries/sdk-commonwidget-1.130.0.pom
rename to libraries/sdk-commonwidget-1.140.0.pom
index 5a731fbc..0a5e3217 100644
--- a/libraries/sdk-commonwidget-1.130.0.pom
+++ b/libraries/sdk-commonwidget-1.140.0.pom
@@ -4,7 +4,7 @@
com.google.vr
sdk-commonwidget
- 1.130.0
+ 1.140.0
aar
Google VR SDK-CommonWidget
@@ -19,7 +19,7 @@
com.google.vr
sdk-common
aar
- 1.130.0
+ 1.140.0
diff --git a/libraries/sdk-controller-1.130.0.aar b/libraries/sdk-controller-1.130.0.aar
deleted file mode 100644
index 6243253d..00000000
Binary files a/libraries/sdk-controller-1.130.0.aar and /dev/null differ
diff --git a/libraries/sdk-controller-1.140.0.aar b/libraries/sdk-controller-1.140.0.aar
new file mode 100644
index 00000000..e6a280d3
Binary files /dev/null and b/libraries/sdk-controller-1.140.0.aar differ
diff --git a/libraries/sdk-controller-1.130.0.pom b/libraries/sdk-controller-1.140.0.pom
similarity index 92%
rename from libraries/sdk-controller-1.130.0.pom
rename to libraries/sdk-controller-1.140.0.pom
index 717b2f74..115e2f67 100644
--- a/libraries/sdk-controller-1.130.0.pom
+++ b/libraries/sdk-controller-1.140.0.pom
@@ -4,7 +4,7 @@
com.google.vr
sdk-controller
- 1.130.0
+ 1.140.0
aar
Google VR SDK-Controller
@@ -19,7 +19,7 @@
com.google.vr
sdk-base
aar
- 1.130.0
+ 1.140.0
diff --git a/libraries/sdk-panowidget-1.130.0.aar b/libraries/sdk-panowidget-1.130.0.aar
deleted file mode 100644
index ef509d1f..00000000
Binary files a/libraries/sdk-panowidget-1.130.0.aar and /dev/null differ
diff --git a/libraries/sdk-panowidget-1.140.0.aar b/libraries/sdk-panowidget-1.140.0.aar
new file mode 100644
index 00000000..1163c45a
Binary files /dev/null and b/libraries/sdk-panowidget-1.140.0.aar differ
diff --git a/libraries/sdk-panowidget-1.130.0.pom b/libraries/sdk-panowidget-1.140.0.pom
similarity index 92%
rename from libraries/sdk-panowidget-1.130.0.pom
rename to libraries/sdk-panowidget-1.140.0.pom
index f13fdfc2..3386ea9a 100644
--- a/libraries/sdk-panowidget-1.130.0.pom
+++ b/libraries/sdk-panowidget-1.140.0.pom
@@ -4,7 +4,7 @@
com.google.vr
sdk-panowidget
- 1.130.0
+ 1.140.0
aar
Google VR SDK-CommonWidget
@@ -19,7 +19,7 @@
com.google.vr
sdk-commonwidget
aar
- 1.130.0
+ 1.140.0
diff --git a/libraries/sdk-videowidget-1.130.0.aar b/libraries/sdk-videowidget-1.130.0.aar
deleted file mode 100644
index 4cb46022..00000000
Binary files a/libraries/sdk-videowidget-1.130.0.aar and /dev/null differ
diff --git a/libraries/sdk-videowidget-1.140.0.aar b/libraries/sdk-videowidget-1.140.0.aar
new file mode 100644
index 00000000..5bc54205
Binary files /dev/null and b/libraries/sdk-videowidget-1.140.0.aar differ
diff --git a/libraries/sdk-videowidget-1.130.0.pom b/libraries/sdk-videowidget-1.140.0.pom
similarity index 94%
rename from libraries/sdk-videowidget-1.130.0.pom
rename to libraries/sdk-videowidget-1.140.0.pom
index 84cc3dd7..23592ad1 100644
--- a/libraries/sdk-videowidget-1.130.0.pom
+++ b/libraries/sdk-videowidget-1.140.0.pom
@@ -4,7 +4,7 @@
com.google.vr
sdk-videowidget
- 1.130.0
+ 1.140.0
aar
Google VR SDK-CommonWidget
@@ -32,7 +32,7 @@
com.google.vr
sdk-commonwidget
aar
- 1.130.0
+ 1.140.0
diff --git a/samples/ndk-controllerpaint/CMakeLists.txt b/samples/ndk-controllerpaint/CMakeLists.txt
new file mode 100644
index 00000000..23e9ae78
--- /dev/null
+++ b/samples/ndk-controllerpaint/CMakeLists.txt
@@ -0,0 +1,33 @@
+# For more information about using CMake with Android Studio, read the
+# documentation: https://d.android.com/studio/projects/add-native-code.html
+
+cmake_minimum_required(VERSION 3.4.1)
+
+# Configure the sample code.
+file(GLOB native_srcs "src/main/jni/*.cc")
+add_library(controllerpaint_jni
+ SHARED
+ ${native_srcs})
+
+# Include the GVR headers & libraries.
+include_directories(${GVR_INCLUDE})
+
+add_library(gvr-lib SHARED IMPORTED)
+set_target_properties(
+ gvr-lib
+ PROPERTIES IMPORTED_LOCATION ${GVR_LIBPATH}/${ANDROID_ABI}/libgvr.so)
+
+# Include general Android libraries.
+find_library(android-lib android)
+find_library(EGL-lib EGL)
+find_library(GLESv2-lib GLESv2)
+find_library(log-lib log)
+
+# Build final libcontrollerpaint_jni.so
+target_link_libraries(controllerpaint_jni
+ gvr-lib
+
+ ${android-lib}
+ ${EGL-lib}
+ ${GLESv2-lib}
+ ${log-lib} )
diff --git a/samples/ndk-controllerpaint/build.gradle b/samples/ndk-controllerpaint/build.gradle
index 5f75bb63..74973814 100644
--- a/samples/ndk-controllerpaint/build.gradle
+++ b/samples/ndk-controllerpaint/build.gradle
@@ -1,59 +1,48 @@
-apply plugin: 'com.android.model.application'
+apply plugin: 'com.android.application'
-model {
- android {
- compileSdkVersion = 26
- buildToolsVersion = "26.0.0"
-
- defaultConfig.with {
- applicationId = "com.google.vr.ndk.samples.controllerpaint"
- minSdkVersion.apiLevel = 24
- targetSdkVersion.apiLevel = 24
- versionCode = 1
- versionName = "1.0"
+android {
+ compileSdkVersion 26
+ defaultConfig {
+ applicationId "com.google.vr.ndk.samples.controllerpaint"
+ minSdkVersion 24
+ targetSdkVersion 24
+ versionCode 1
+ versionName "1.0"
+ externalNativeBuild {
+ cmake {
+ cppFlags "-std=gnu++11"
+ arguments "-DGVR_LIBPATH=${project.rootDir}/libraries/jni",
+ "-DGVR_INCLUDE=${project.rootDir}/libraries/headers"
+ }
}
- }
- android.buildTypes {
- release {
- minifyEnabled = true
- proguardFiles.add(file('../../proguard-gvr.txt'))
+ buildTypes {
+ release {
+ minifyEnabled = true
+ proguardFiles.add(file("${project.rootDir}/proguard-gvr.txt"))
+ }
}
- }
- android.ndk {
- moduleName = "controllerpaint_jni"
- cppFlags.add("-std=c++11")
- cppFlags.add("-I" + file("src/main/jni").absolutePath)
- // Add the necessary GVR headers.
- cppFlags.add("-I" + file("${project.rootDir}/libraries/headers").absolutePath)
-
- stl = "gnustl_shared"
- // Add the necessary GVR .so files for all architectures.
- ldFlags.add("-L" + file("${project.rootDir}/libraries/jni/arm64-v8a").absolutePath)
- ldFlags.add("-L" + file("${project.rootDir}/libraries/jni/armeabi-v7a").absolutePath)
- ldFlags.add("-L" + file("${project.rootDir}/libraries/jni/x86").absolutePath)
-
- ldLibs.addAll(["log", "android", "EGL", "GLESv2"])
-
- // Specific the particular .so files this sample links against.
- ldLibs.add("gvr")
- }
- android.productFlavors {
- create ("fat") {
+ ndk {
// This sample builds all architectures by default. Note that if you
// only want to build for a specific architecture, you need to
// remove the appropriate lines below. You also need to remove the
// .so files from the apk using
// "packagingOptions {exclude('lib/armeabi-v7a/*')}" in the android
// section.
- ndk.abiFilters.add("arm64-v8a")
- ndk.abiFilters.add("armeabi-v7a")
- ndk.abiFilters.add("x86")
+ abiFilters "arm64-v8a"
+ abiFilters "armeabi-v7a"
+ abiFilters "x86"
+ }
+ }
+ externalNativeBuild {
+ cmake {
+ path "CMakeLists.txt"
}
}
}
+
dependencies {
- compile 'com.google.vr:sdk-base:1.130.0'
+ compile 'com.google.vr:sdk-base:1.140.0'
}
-build.dependsOn(':extractNdk')
\ No newline at end of file
+build.dependsOn(':extractNdk')
diff --git a/samples/ndk-controllerpaint/src/main/AndroidManifest.xml b/samples/ndk-controllerpaint/src/main/AndroidManifest.xml
index 414a40e5..8cd84c04 100644
--- a/samples/ndk-controllerpaint/src/main/AndroidManifest.xml
+++ b/samples/ndk-controllerpaint/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="180313033"
+ android:versionName="1.140.0">
diff --git a/samples/ndk-treasurehunt/CMakeLists.txt b/samples/ndk-treasurehunt/CMakeLists.txt
new file mode 100644
index 00000000..89427ba4
--- /dev/null
+++ b/samples/ndk-treasurehunt/CMakeLists.txt
@@ -0,0 +1,39 @@
+# For more information about using CMake with Android Studio, read the
+# documentation: https://d.android.com/studio/projects/add-native-code.html
+
+cmake_minimum_required(VERSION 3.4.1)
+
+# Configure the sample code.
+file(GLOB native_srcs "src/main/jni/*.cc")
+add_library(treasurehunt_jni
+ SHARED
+ ${native_srcs})
+
+# Include the GVR headers & libraries.
+include_directories(${GVR_INCLUDE})
+
+add_library(gvr-lib SHARED IMPORTED)
+set_target_properties(
+ gvr-lib
+ PROPERTIES IMPORTED_LOCATION ${GVR_LIBPATH}/${ANDROID_ABI}/libgvr.so)
+
+add_library(gvraudio-lib SHARED IMPORTED)
+set_target_properties(
+ gvraudio-lib
+ PROPERTIES IMPORTED_LOCATION ${GVR_LIBPATH}/${ANDROID_ABI}/libgvr_audio.so)
+
+# Include general Android libraries.
+find_library(android-lib android)
+find_library(EGL-lib EGL)
+find_library(GLESv2-lib GLESv2)
+find_library(log-lib log)
+
+# Build final libtreasurehunt_jni.so
+target_link_libraries(treasurehunt_jni
+ gvr-lib
+ gvraudio-lib
+
+ ${android-lib}
+ ${EGL-lib}
+ ${GLESv2-lib}
+ ${log-lib} )
diff --git a/samples/ndk-treasurehunt/build.gradle b/samples/ndk-treasurehunt/build.gradle
index 3471887d..b270db43 100644
--- a/samples/ndk-treasurehunt/build.gradle
+++ b/samples/ndk-treasurehunt/build.gradle
@@ -1,61 +1,49 @@
-apply plugin: 'com.android.model.application'
+apply plugin: 'com.android.application'
-model {
- android {
- compileSdkVersion = 26
- buildToolsVersion = "26.0.0"
-
- defaultConfig.with {
- applicationId = "com.google.vr.ndk.samples.treasurehunt"
- minSdkVersion.apiLevel = 19
- targetSdkVersion.apiLevel = 24
- versionCode = 1
- versionName = "1.0"
+android {
+ compileSdkVersion 26
+ defaultConfig {
+ applicationId "com.google.vr.ndk.samples.treasurehunt"
+ minSdkVersion 19
+ targetSdkVersion 24
+ versionCode 1
+ versionName "1.0"
+ externalNativeBuild {
+ cmake {
+ cppFlags "-std=gnu++11"
+ arguments "-DGVR_LIBPATH=${project.rootDir}/libraries/jni",
+ "-DGVR_INCLUDE=${project.rootDir}/libraries/headers"
+ }
}
- }
- android.buildTypes {
- release {
- minifyEnabled = true
- proguardFiles.add(file('../../proguard-gvr.txt'))
+ buildTypes {
+ release {
+ minifyEnabled = true
+ proguardFiles.add(file("${project.rootDir}/proguard-gvr.txt"))
+ }
}
- }
- android.ndk {
- moduleName = "treasurehunt_jni"
- cppFlags.add("-std=c++11")
- cppFlags.add("-I" + file("src/main/jni").absolutePath)
- // Add the necessary GVR headers.
- cppFlags.add("-I" + file("${project.rootDir}/libraries/headers").absolutePath)
-
- stl = "gnustl_shared"
- // Add the necessary GVR .so files for all architectures.
- ldFlags.add("-L" + file("${project.rootDir}/libraries/jni/arm64-v8a").absolutePath)
- ldFlags.add("-L" + file("${project.rootDir}/libraries/jni/armeabi-v7a").absolutePath)
- ldFlags.add("-L" + file("${project.rootDir}/libraries/jni/x86").absolutePath)
-
- ldLibs.addAll(["log", "android", "EGL", "GLESv2"])
-
- // Specific the particular .so files this sample links against.
- ldLibs.add("gvr")
- ldLibs.add("gvr_audio")
- }
- android.productFlavors {
- create ("fat") {
+ ndk {
// This sample builds all architectures by default. Note that if you
// only want to build for a specific architecture, you need to
// remove the appropriate lines below. You also need to remove the
// .so files from the apk using
// "packagingOptions {exclude('lib/armeabi-v7a/*')}" in the android
// section.
- ndk.abiFilters.add("arm64-v8a")
- ndk.abiFilters.add("armeabi-v7a")
- ndk.abiFilters.add("x86")
+ abiFilters "arm64-v8a"
+ abiFilters "armeabi-v7a"
+ abiFilters "x86"
+ }
+ }
+ externalNativeBuild {
+ cmake {
+ path "CMakeLists.txt"
}
}
}
+
dependencies {
- compile 'com.google.vr:sdk-audio:1.130.0'
- compile 'com.google.vr:sdk-base:1.130.0'
+ compile 'com.google.vr:sdk-audio:1.140.0'
+ compile 'com.google.vr:sdk-base:1.140.0'
}
build.dependsOn(':extractNdk')
diff --git a/samples/ndk-treasurehunt/src/main/AndroidManifest.xml b/samples/ndk-treasurehunt/src/main/AndroidManifest.xml
index e819cf58..2ecc0ec1 100644
--- a/samples/ndk-treasurehunt/src/main/AndroidManifest.xml
+++ b/samples/ndk-treasurehunt/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="180313033"
+ android:versionName="1.140.0">
diff --git a/samples/sdk-controllerclient/build.gradle b/samples/sdk-controllerclient/build.gradle
index 71f1b076..93163f35 100644
--- a/samples/sdk-controllerclient/build.gradle
+++ b/samples/sdk-controllerclient/build.gradle
@@ -13,30 +13,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-apply plugin: 'com.android.model.application'
+apply plugin: 'com.android.application'
-model {
- android {
- compileSdkVersion 26
- buildToolsVersion "26.0.0"
+android {
+ compileSdkVersion 26
- defaultConfig {
- minSdkVersion.apiLevel 24
- targetSdkVersion.apiLevel 24
- versionCode 1
- versionName "1.0"
- }
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 24
+ versionCode 1
+ versionName "1.0"
+ }
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles.add(file('../../proguard-gvr.txt'))
- }
+ buildTypes {
+ release {
+ minifyEnabled true
+ proguardFiles.add(file('../../proguard-gvr.txt'))
}
+
}
}
dependencies {
- compile 'com.google.vr:sdk-base:1.130.0'
- compile 'com.google.vr:sdk-controller:1.130.0'
+ compile 'com.google.vr:sdk-base:1.140.0'
+ compile 'com.google.vr:sdk-controller:1.140.0'
}
diff --git a/samples/sdk-controllerclient/src/main/AndroidManifest.xml b/samples/sdk-controllerclient/src/main/AndroidManifest.xml
index f16c3255..7b14738f 100644
--- a/samples/sdk-controllerclient/src/main/AndroidManifest.xml
+++ b/samples/sdk-controllerclient/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="180313033"
+ android:versionName="1.140.0">
diff --git a/samples/sdk-simplepanowidget/build.gradle b/samples/sdk-simplepanowidget/build.gradle
index 07db98e1..27e1d8c4 100644
--- a/samples/sdk-simplepanowidget/build.gradle
+++ b/samples/sdk-simplepanowidget/build.gradle
@@ -13,29 +13,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-apply plugin: 'com.android.model.application'
+apply plugin: 'com.android.application'
-model {
- android {
- compileSdkVersion 26
- buildToolsVersion "26.0.0"
+android {
+ compileSdkVersion 26
- defaultConfig {
- minSdkVersion.apiLevel 19
- targetSdkVersion.apiLevel 22
- versionCode 1
- versionName "1.0"
- }
+ defaultConfig {
+ minSdkVersion 19
+ targetSdkVersion 22
+ versionCode 1
+ versionName "1.0"
+ }
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles.add(file('../../proguard-gvr.txt'))
- }
+ buildTypes {
+ release {
+ minifyEnabled true
+ proguardFiles.add(file('../../proguard-gvr.txt'))
}
+
}
}
dependencies {
- compile 'com.google.vr:sdk-panowidget:1.130.0'
+ compile 'com.google.vr:sdk-panowidget:1.140.0'
}
diff --git a/samples/sdk-simplepanowidget/src/main/AndroidManifest.xml b/samples/sdk-simplepanowidget/src/main/AndroidManifest.xml
index 16ed5c06..a349322c 100644
--- a/samples/sdk-simplepanowidget/src/main/AndroidManifest.xml
+++ b/samples/sdk-simplepanowidget/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="180313033"
+ android:versionName="1.140.0">
diff --git a/samples/sdk-simplevideowidget/build.gradle b/samples/sdk-simplevideowidget/build.gradle
index ddfdf495..edd1470a 100644
--- a/samples/sdk-simplevideowidget/build.gradle
+++ b/samples/sdk-simplevideowidget/build.gradle
@@ -13,29 +13,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-apply plugin: 'com.android.model.application'
+apply plugin: 'com.android.application'
-model {
- android {
- compileSdkVersion 26
- buildToolsVersion "26.0.0"
+android {
+ compileSdkVersion 26
- defaultConfig {
- minSdkVersion.apiLevel 19
- targetSdkVersion.apiLevel 22
- versionCode 1
- versionName "1.0"
- }
+ defaultConfig {
+ minSdkVersion 19
+ targetSdkVersion 22
+ versionCode 1
+ versionName "1.0"
+ }
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles.add(file('../../proguard-gvr.txt'))
- }
+ buildTypes {
+ release {
+ minifyEnabled true
+ proguardFiles.add(file('../../proguard-gvr.txt'))
}
+
}
}
dependencies {
- compile 'com.google.vr:sdk-videowidget:1.130.0'
+ compile 'com.google.vr:sdk-videowidget:1.140.0'
}
diff --git a/samples/sdk-simplevideowidget/src/main/AndroidManifest.xml b/samples/sdk-simplevideowidget/src/main/AndroidManifest.xml
index 5a857208..608f917c 100644
--- a/samples/sdk-simplevideowidget/src/main/AndroidManifest.xml
+++ b/samples/sdk-simplevideowidget/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="180313033"
+ android:versionName="1.140.0">
diff --git a/samples/sdk-treasurehunt/build.gradle b/samples/sdk-treasurehunt/build.gradle
index 53510f06..1655a8ca 100644
--- a/samples/sdk-treasurehunt/build.gradle
+++ b/samples/sdk-treasurehunt/build.gradle
@@ -13,30 +13,28 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-apply plugin: 'com.android.model.application'
+apply plugin: 'com.android.application'
-model {
- android {
- compileSdkVersion 26
- buildToolsVersion "26.0.0"
+android {
+ compileSdkVersion 26
- defaultConfig {
- minSdkVersion.apiLevel 19
- targetSdkVersion.apiLevel 24
- versionCode 1
- versionName "1.0"
- }
+ defaultConfig {
+ minSdkVersion 19
+ targetSdkVersion 24
+ versionCode 1
+ versionName "1.0"
+ }
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles.add(file('../../proguard-gvr.txt'))
- }
+ buildTypes {
+ release {
+ minifyEnabled true
+ proguardFiles.add(file('../../proguard-gvr.txt'))
}
+
}
}
dependencies {
- compile 'com.google.vr:sdk-audio:1.130.0'
- compile 'com.google.vr:sdk-base:1.130.0'
+ compile 'com.google.vr:sdk-audio:1.140.0'
+ compile 'com.google.vr:sdk-base:1.140.0'
}
diff --git a/samples/sdk-treasurehunt/src/main/AndroidManifest.xml b/samples/sdk-treasurehunt/src/main/AndroidManifest.xml
index 189c6e04..3e165611 100644
--- a/samples/sdk-treasurehunt/src/main/AndroidManifest.xml
+++ b/samples/sdk-treasurehunt/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="180313033"
+ android:versionName="1.140.0">
diff --git a/samples/sdk-video360/build.gradle b/samples/sdk-video360/build.gradle
index 40e77112..e4a47359 100644
--- a/samples/sdk-video360/build.gradle
+++ b/samples/sdk-video360/build.gradle
@@ -13,31 +13,29 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-apply plugin: 'com.android.model.application'
+apply plugin: 'com.android.application'
-model {
- android {
- compileSdkVersion 26
- buildToolsVersion "26.0.0"
+android {
+ compileSdkVersion 26
- defaultConfig {
- minSdkVersion.apiLevel 24
- targetSdkVersion.apiLevel 24
- versionCode 1
- versionName "1.0"
- }
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 24
+ versionCode 1
+ versionName "1.0"
+ }
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles.add(file('../../proguard-gvr.txt'))
- }
+ buildTypes {
+ release {
+ minifyEnabled true
+ proguardFiles.add(file('../../proguard-gvr.txt'))
}
+
}
}
dependencies {
compile 'com.android.support:appcompat-v7:26.1.0'
- compile 'com.google.vr:sdk-base:1.130.0'
- compile 'com.google.vr:sdk-controller:1.130.0'
+ compile 'com.google.vr:sdk-base:1.140.0'
+ compile 'com.google.vr:sdk-controller:1.140.0'
}
diff --git a/samples/sdk-video360/src/main/AndroidManifest.xml b/samples/sdk-video360/src/main/AndroidManifest.xml
index 8bffce68..938bb735 100644
--- a/samples/sdk-video360/src/main/AndroidManifest.xml
+++ b/samples/sdk-video360/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="180313033"
+ android:versionName="1.140.0">
diff --git a/samples/sdk-video360/src/main/java/com/google/vr/sdk/samples/video360/VrVideoActivity.java b/samples/sdk-video360/src/main/java/com/google/vr/sdk/samples/video360/VrVideoActivity.java
index 22165508..1d7878ed 100644
--- a/samples/sdk-video360/src/main/java/com/google/vr/sdk/samples/video360/VrVideoActivity.java
+++ b/samples/sdk-video360/src/main/java/com/google/vr/sdk/samples/video360/VrVideoActivity.java
@@ -189,6 +189,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent unused)
launch2dActivity();
} else {
// This should contain a VR UI to handle the user declining the exit request.
+ Log.e(TAG, "Declining the exit request isn't implemented in this sample.");
}
}
diff --git a/samples/sdk-videoplayer/build.gradle b/samples/sdk-videoplayer/build.gradle
index 955cac65..417d525d 100644
--- a/samples/sdk-videoplayer/build.gradle
+++ b/samples/sdk-videoplayer/build.gradle
@@ -13,26 +13,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-apply plugin: 'com.android.model.application'
+apply plugin: 'com.android.application'
-model {
- android {
- compileSdkVersion 26
- buildToolsVersion "26.0.0"
+android {
+ compileSdkVersion 26
- defaultConfig {
- minSdkVersion.apiLevel 24
- targetSdkVersion.apiLevel 24
- versionCode 1
- versionName "1.0"
- }
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 24
+ versionCode 1
+ versionName "1.0"
+ }
- buildTypes {
- release {
- minifyEnabled true
- proguardFiles.add(file('../../proguard-gvr.txt'))
- }
+ buildTypes {
+ release {
+ minifyEnabled true
+ proguardFiles.add(file('../../proguard-gvr.txt'))
}
+
}
}
@@ -40,6 +38,6 @@ dependencies {
compile 'com.google.android.exoplayer:exoplayer:2.6.1'
compile 'com.google.android.exoplayer:extension-gvr:2.6.1'
- compile 'com.google.vr:sdk-base:1.130.0'
- compile 'com.google.vr:sdk-common:1.130.0'
+ compile 'com.google.vr:sdk-base:1.140.0'
+ compile 'com.google.vr:sdk-common:1.140.0'
}
diff --git a/samples/sdk-videoplayer/src/main/AndroidManifest.xml b/samples/sdk-videoplayer/src/main/AndroidManifest.xml
index 7d3f11b3..46dd60b3 100644
--- a/samples/sdk-videoplayer/src/main/AndroidManifest.xml
+++ b/samples/sdk-videoplayer/src/main/AndroidManifest.xml
@@ -1,8 +1,8 @@
+ android:versionCode="180313033"
+ android:versionName="1.140.0">
diff --git a/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/Settings.java b/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/Settings.java
index 86d92457..da4f5094 100644
--- a/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/Settings.java
+++ b/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/Settings.java
@@ -15,9 +15,9 @@ public class Settings {
private static final String TAG = "Settings";
private static final String LOCAL_PREFERENCE_FILE = "videoplayerPrefs";
- private static final String USE_DRM_VIDEO_SAMPLE = "use_drm_video_sample";
- private static final String SHOW_FRAME_RATE_BAR = "show_frame_rate_bar";
- private static final String VIDEO_LENGTH_SECONDS = "video_length_seconds";
+ public static final String USE_DRM_VIDEO_SAMPLE = "use_drm_video_sample";
+ public static final String SHOW_FRAME_RATE_BAR = "show_frame_rate_bar";
+ public static final String VIDEO_LENGTH_SECONDS = "video_length_seconds";
private final Activity activity;
// When true, a DRM-protected sample is played back in a protected compositor GL context. When
diff --git a/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/VideoExoPlayer2.java b/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/VideoExoPlayer2.java
index 2f5f2e5c..f1938c0a 100644
--- a/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/VideoExoPlayer2.java
+++ b/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/VideoExoPlayer2.java
@@ -198,6 +198,11 @@ private DataSource.Factory buildDataSourceFactory(boolean useBandwidthMeter) {
return buildDataSourceFactory(useBandwidthMeter ? BANDWIDTH_METER : null);
}
+ private DataSource.Factory buildDataSourceFactory(DefaultBandwidthMeter bandwidthMeter) {
+ return new DefaultDataSourceFactory(
+ context, bandwidthMeter, buildHttpDataSourceFactory(bandwidthMeter));
+ }
+
/**
* Returns a new HttpDataSource factory.
*
@@ -209,6 +214,10 @@ private HttpDataSource.Factory buildHttpDataSourceFactory(boolean useBandwidthMe
return buildHttpDataSourceFactory(useBandwidthMeter ? BANDWIDTH_METER : null);
}
+ private HttpDataSource.Factory buildHttpDataSourceFactory(DefaultBandwidthMeter bandwidthMeter) {
+ return new DefaultHttpDataSourceFactory(userAgent, bandwidthMeter);
+ }
+
private DrmSessionManager buildDrmSessionManager(
UUID uuid, String licenseUrl) throws UnsupportedDrmException {
if (Util.SDK_INT < 18) {
@@ -249,15 +258,6 @@ private MediaSource buildMediaSource(Uri uri) {
}
}
- private DataSource.Factory buildDataSourceFactory(DefaultBandwidthMeter bandwidthMeter) {
- return new DefaultDataSourceFactory(
- context, bandwidthMeter, buildHttpDataSourceFactory(bandwidthMeter));
- }
-
- public HttpDataSource.Factory buildHttpDataSourceFactory(DefaultBandwidthMeter bandwidthMeter) {
- return new DefaultHttpDataSourceFactory(userAgent, bandwidthMeter);
- }
-
private static final class GvrRenderersFactory extends DefaultRenderersFactory {
private final GvrAudioProcessor gvrAudioProcessor;
@@ -279,36 +279,41 @@ public AudioProcessor[] buildAudioProcessors() {
@Override
public void onPlayerStateChanged(boolean playWhenReady, int playbackState) {
if (playbackState == Player.STATE_ENDED) {
- DecoderCounters counters = player.getVideoDecoderCounters();
- counters.ensureUpdated();
- Log.i(TAG, "Total video frames decoded: " + counters.renderedOutputBufferCount);
+ pause();
+ Log.i(TAG, "Total video frames decoded: " + getRenderedOutputBufferCount());
}
}
+ protected int getRenderedOutputBufferCount() {
+ DecoderCounters counters = player.getVideoDecoderCounters();
+ counters.ensureUpdated();
+ return counters.renderedOutputBufferCount;
+ }
+
@Override
public void onLoadingChanged(boolean isLoading) {}
@Override
public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {}
@Override
public void onPlayerError(ExoPlaybackException error) {}
- // Remove when this is part of a stable ExoPlayer release.
- public void onPositionDiscontinuity() {}
- // Uncomment when this is part of a stable ExoPlayer release.
- // @Override
+
+ @Override
public void onPositionDiscontinuity(int reason) {}
+
@Override
public void onRepeatModeChanged(int repeatMode) {}
- // Uncomment when this is part of a stable ExoPlayer release.
- // @Override
+
+ @Override
public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {}
- // Remove when this is part of a stable ExoPlayer release.
+
+ // Old API.
public void onTimelineChanged(Timeline timeline, Object manifest) {}
- // Uncomment when this is part of a stable ExoPlayer release.
- // @Override
+ // New API.
public void onTimelineChanged(Timeline timeline, Object manifest, int reason) {}
+
@Override
public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {}
- // Uncomment when this is part of a stable ExoPlayer release
- // @Override
+
+ @Override
public void onSeekProcessed() {}
}
diff --git a/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/WatchVideoActivity.java b/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/WatchVideoActivity.java
index 569ef9d2..714fc083 100644
--- a/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/WatchVideoActivity.java
+++ b/samples/sdk-videoplayer/src/main/java/com/google/vr/sdk/samples/videoplayer/WatchVideoActivity.java
@@ -26,6 +26,7 @@
import android.view.MotionEvent;
import android.view.Surface;
import android.view.View;
+import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.drm.UnsupportedDrmException;
import com.google.vr.ndk.base.AndroidCompat;
import com.google.vr.ndk.base.GvrLayout;
@@ -53,6 +54,7 @@ public class WatchVideoActivity extends Activity {
private VideoExoPlayer2 videoPlayer;
private Settings settings;
private boolean hasFirstFrame;
+ private int displayedFrameCount;
// Transform a quad that fills the clip box at Z=0 to a 16:9 screen at Z=-4. Note that the matrix
// is column-major, so the translation is on the last row rather than the last column in this
@@ -133,18 +135,19 @@ public void onSurfaceAvailable(Surface surface) {
@Override
public void onFrameAvailable() {
+ displayedFrameCount++;
// If this is the first frame, and the Activity is still in the foreground, signal to
// remove the loading splash screen, and draw alpha 0 in the color buffer where the
// video will be drawn by the GvrApi.
if (!hasFirstFrame && videoPlayer != null) {
surfaceView.queueEvent(
- new Runnable() {
- @Override
- public void run() {
- Log.i(TAG, "Video has started playback, update renderer.");
- renderer.setHasVideoPlaybackStarted(true);
- }
- });
+ new Runnable() {
+ @Override
+ public void run() {
+ Log.i(TAG, "Video has started playback, update renderer.");
+ renderer.setHasVideoPlaybackStarted(true);
+ }
+ });
hasFirstFrame = true;
}
@@ -215,6 +218,7 @@ private void initVideoPlayer() {
} catch (UnsupportedDrmException e) {
Log.e(TAG, "Error initializing video player", e);
}
+ displayedFrameCount = 0;
}
@Override
@@ -316,6 +320,36 @@ private void setImmersiveSticky() {
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
}
+ /**
+ * Get the number of frames displayed by the ExternalSurface.
+ */
+ public int getDisplayedFrameCount() {
+ return displayedFrameCount;
+ }
+
+ /**
+ * Get the number of frames decoded by the video decoder.
+ */
+ public int getDecodedFrameCount() {
+ if (videoPlayer != null) {
+ return videoPlayer.getRenderedOutputBufferCount();
+ }
+ return 0;
+ }
+
+ /**
+ * Get the frames per second of the video source.
+ */
+ public float getVideoFrameRate() {
+ if (videoPlayer != null) {
+ Format videoFormat = videoPlayer.getPlayer().getVideoFormat();
+ if (videoFormat != null) {
+ return videoFormat.frameRate;
+ }
+ }
+ return -1;
+ }
+
/**
* Returns true if video is currently playing. This method should only be called in the UI thread.
*/