diff --git a/.gitignore b/.gitignore
index d7dd98f..06d8551 100644
--- a/.gitignore
+++ b/.gitignore
@@ -55,3 +55,10 @@ Projects/Android/jni/src/gl4es/spec/xml/gles-2.0.xml
Projects/Android/.idea/vcs.xml
Projects/Android/jni/src/gl4es/spec/xml/glx.xml
Projects/Android/.idea/runConfigurations.xml
+Projects/Android/.gradle/4.6/fileHashes/fileHashes.lock
+Projects/Android/Android.iml
+Projects/Android/.gradle/vcsWorkingDirs/gc.properties
+Projects/Android/.idea/libraries/Gradle__com_android_support_support_annotations_24_2_0_jar.xml
+Projects/Android/.idea/libraries/Gradle__com_android_support_support_compat_24_2_0_aar.xml
+Projects/Android/.idea/encodings.xml
+Projects/Android/.idea/libraries/Gradle__com_android_support_support_core_utils_24_2_0_aar.xml
diff --git a/Projects/Android/Android.iml b/Projects/Android/Android.iml
index b8c2bb6..5c134cb 100644
--- a/Projects/Android/Android.iml
+++ b/Projects/Android/Android.iml
@@ -8,7 +8,7 @@
-
+
@@ -21,14 +21,15 @@
-
+
+
-
-
-
+
+
+
@@ -55,14 +56,12 @@
-
-
@@ -98,14 +97,6 @@
-
-
-
-
-
-
-
-
@@ -114,33 +105,53 @@
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
-
+
+
+
-
-
+
+
+
+
-
+
+
+
+
-
+
@@ -156,8 +167,10 @@
-
+
-
+
+
+
\ No newline at end of file
diff --git a/Projects/Android/AndroidManifest.xml b/Projects/Android/AndroidManifest.xml
index fab0c56..1d2c48a 100644
--- a/Projects/Android/AndroidManifest.xml
+++ b/Projects/Android/AndroidManifest.xml
@@ -1,14 +1,13 @@
-
-
+ android:versionCode="4"
+ android:versionName="1.0.1" android:installLocation="auto" >
-
+
diff --git a/Projects/Android/build.gradle b/Projects/Android/build.gradle
index 35670b2..cde4018 100644
--- a/Projects/Android/build.gradle
+++ b/Projects/Android/build.gradle
@@ -22,7 +22,9 @@ android {
ndkBuild {
abiFilters 'armeabi-v7a'
}
- }
+ }
+ minSdkVersion 24
+ targetSdkVersion 26
}
sourceSets {
@@ -33,9 +35,17 @@ android {
assets.srcDirs = ['../../assets']
}
}
+ compileOptions {
+ sourceCompatibility = '1.8'
+ targetCompatibility = '1.8'
+ }
+ compileSdkVersion = 24
+ buildToolsVersion = '29.0.1'
}
dependencies {
+ implementation "com.android.support:support-compat:24.2.0"
+ implementation "com.android.support:support-core-utils:24.2.0"
}
repositories {
diff --git a/Projects/Android/gradle/wrapper/gradle-wrapper.properties b/Projects/Android/gradle/wrapper/gradle-wrapper.properties
index 8a1cc64..ef7382d 100644
--- a/Projects/Android/gradle/wrapper/gradle-wrapper.properties
+++ b/Projects/Android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Thu Sep 27 22:37:56 BST 2018
+#Fri Jul 26 21:17:15 BST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
diff --git a/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c b/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c
index 8d069a2..ff4d1dc 100644
--- a/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c
+++ b/Projects/Android/jni/src/Lambda1VR/L1VR_SurfaceView.c
@@ -1153,14 +1153,14 @@ static void ovrApp_HandleInput( ovrApp * app )
ovrTracking remoteTracking;
ovrInputStateTrackedRemote trackedRemoteState;
trackedRemoteState.Header.ControllerType = ovrControllerType_TrackedRemote;
- result = vrapi_GetCurrentInputState(app->Ovr, i, &trackedRemoteState.Header);
+ result = vrapi_GetCurrentInputState(app->Ovr, cap.DeviceID, &trackedRemoteState.Header);
if (result == ovrSuccess) {
ovrInputTrackedRemoteCapabilities remoteCapabilities;
remoteCapabilities.Header = cap;
result = vrapi_GetInputDeviceCapabilities(app->Ovr, &remoteCapabilities.Header);
- result = vrapi_GetInputTrackingState(app->Ovr, i, app->DisplayTime,
+ result = vrapi_GetInputTrackingState(app->Ovr, cap.DeviceID, app->DisplayTime,
&remoteTracking);
if (remoteCapabilities.ControllerCapabilities & ovrControllerCaps_RightHand) {
diff --git a/Projects/Projects.iml b/Projects/Projects.iml
index ef75c36..4a04956 100644
--- a/Projects/Projects.iml
+++ b/Projects/Projects.iml
@@ -1,19 +1,19 @@
-
-
-
-
-
+
+
+
+
+
-
+
diff --git a/VrSamples-Lambda1VR.iml b/VrSamples-Lambda1VR.iml
index 2745e63..e7d3c0e 100644
--- a/VrSamples-Lambda1VR.iml
+++ b/VrSamples-Lambda1VR.iml
@@ -1,19 +1,19 @@
-
-
-
-
-
+
+
+
+
+
-
+
diff --git a/java/com/drbeef/lambda1vr/GLES3JNIActivity.java b/java/com/drbeef/lambda1vr/GLES3JNIActivity.java
index 55d20ca..5bdc029 100644
--- a/java/com/drbeef/lambda1vr/GLES3JNIActivity.java
+++ b/java/com/drbeef/lambda1vr/GLES3JNIActivity.java
@@ -11,11 +11,15 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
+import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
+import android.content.pm.PackageManager;
import android.content.res.AssetManager;
import android.os.Bundle;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
@@ -35,6 +39,10 @@ import static android.system.Os.setenv;
private static final String TAG = "Lambda1VR";
+ private int permissionCount = 0;
+ private static final int READ_EXTERNAL_STORAGE_PERMISSION_ID = 1;
+ private static final int WRITE_EXTERNAL_STORAGE_PERMISSION_ID = 2;
+
String commandLineParams;
private SurfaceView mView;
@@ -60,6 +68,73 @@ import static android.system.Os.setenv;
params.screenBrightness = 1.0f;
getWindow().setAttributes( params );
+
+
+ checkPermissionsAndInitialize();
+ }
+
+ /** Initializes the Activity only if the permission has been granted. */
+ private void checkPermissionsAndInitialize() {
+ // Boilerplate for checking runtime permissions in Android.
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
+ != PackageManager.PERMISSION_GRANTED){
+ ActivityCompat.requestPermissions(
+ GLES3JNIActivity.this,
+ new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
+ WRITE_EXTERNAL_STORAGE_PERMISSION_ID);
+ }
+ else
+ {
+ permissionCount++;
+ }
+
+ if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
+ != PackageManager.PERMISSION_GRANTED)
+ {
+ ActivityCompat.requestPermissions(
+ GLES3JNIActivity.this,
+ new String[] {Manifest.permission.READ_EXTERNAL_STORAGE},
+ READ_EXTERNAL_STORAGE_PERMISSION_ID);
+ }
+ else
+ {
+ permissionCount++;
+ }
+
+ if (permissionCount == 2) {
+ // Permissions have already been granted.
+ create();
+ }
+ }
+
+ /** Handles the user accepting the permission. */
+ @Override
+ public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] results) {
+ if (requestCode == READ_EXTERNAL_STORAGE_PERMISSION_ID) {
+ if (results.length > 0 && results[0] == PackageManager.PERMISSION_GRANTED) {
+ permissionCount++;
+ }
+ else
+ {
+ System.exit(0);
+ }
+ }
+
+ if (requestCode == WRITE_EXTERNAL_STORAGE_PERMISSION_ID) {
+ if (results.length > 0 && results[0] == PackageManager.PERMISSION_GRANTED) {
+ permissionCount++;
+ }
+ else
+ {
+ System.exit(0);
+ }
+ }
+
+ checkPermissionsAndInitialize();
+ }
+
+ public void create()
+ {
copy_asset(getFilesDir().getPath(), "extras.pak", false);
copy_asset("/sdcard/xash/valve/", "config.cfg", false); // Copy in case user has deleted their config
copy_asset("/sdcard/xash/", "commandline.txt", false); // Copy in case user has deleted their config