Skip to content

Commit

Permalink
updated to support the oculus quest headset
Browse files Browse the repository at this point in the history
  • Loading branch information
CidVonHighwind committed Jul 25, 2019
1 parent 6758385 commit f9b2507
Show file tree
Hide file tree
Showing 4 changed files with 136 additions and 93 deletions.
84 changes: 48 additions & 36 deletions Android/AndroidManifest.xml
@@ -1,41 +1,53 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.nintendont.virtualboygo"
android:versionCode="1"
android:versionName="1.1"
android:installLocation="auto" >
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
package="com.nintendont.virtualboygo"
android:installLocation="auto"
android:versionCode="1"
android:versionName="1.3.1">

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-sdk
android:minSdkVersion="21"
android:targetSdkVersion="25" />

<uses-feature android:name="android.hardware.usb.host" />
<!-- Tell the system this app requires OpenGL ES 3.1. -->
<uses-feature android:glEsVersion="0x00030001" android:required="true" />
<application
android:allowBackup="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<meta-data android:name="com.samsung.android.vr.application.mode" android:value="vr_only"/>
<!-- launchMode is set to singleTask because there should never be multiple copies of the app running -->
<!-- Theme.Black.NoTitleBar.Fullscreen gives solid black instead of a (bad stereoscopic) gradient on app transition -->
<!-- If targeting API level 24+, configChanges should additionally include 'density'. -->
<!-- If targeting API level 24+, android:resizeableActivity="false" should be added. -->
<activity
android:name="com.nintendont.virtualboygo.MainActivity"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:configChanges="screenSize|screenLayout|orientation|keyboardHidden|keyboard|navigation|uiMode">
<!-- This filter lets the apk show up as a launchable icon -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-feature android:name="android.hardware.usb.host" />
<!-- Tell the system this app requires OpenGL ES 3.1. -->
<uses-feature
android:glEsVersion="0x00030001"
android:required="true" />
<uses-feature
android:name="android.hardware.vr.headtracking"
android:required="true"
android:version="1" />

<application
android:allowBackup="false"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<meta-data
android:name="com.samsung.android.vr.application.mode"
android:value="vr_only" />
<!-- launchMode is set to singleTask because there should never be multiple copies of the app running -->
<!-- Theme.Black.NoTitleBar.Fullscreen gives solid black instead of a (bad stereoscopic) gradient on app transition -->
<!-- If targeting API level 24+, configChanges should additionally include 'density'. -->
<!-- If targeting API level 24+, android:resizeableActivity="false" should be added. -->
<activity
android:name="com.nintendont.virtualboygo.MainActivity"
android:configChanges="screenSize|screenLayout|orientation|keyboardHidden|keyboard|navigation|uiMode"
android:label="@string/app_name"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<!-- This filter lets the apk show up as a launchable icon -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
3 changes: 3 additions & 0 deletions Android/build.gradle
Expand Up @@ -24,6 +24,8 @@ android {
abiFilters 'armeabi-v7a', 'arm64-v8a'
}
}
minSdkVersion 21
targetSdkVersion 25
}

sourceSets {
Expand All @@ -40,4 +42,5 @@ android {
disable 'MissingTranslation'
disable 'ExtraTranslation'
}
compileSdkVersion = 26
}
2 changes: 1 addition & 1 deletion Android/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
#Thu Jul 18 19:53:18 CEST 2019
#Thu Jul 25 14:04:09 CEST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
Expand Down
140 changes: 84 additions & 56 deletions java/com/nintendont/virtualboygo/MainActivity.java
@@ -1,14 +1,12 @@
/************************************************************************************
Filename : MainActivity.java
Content :
Created :
Authors :
Filename : MainActivity.java
Content :
Created :
Authors :
Copyright : Copyright 2014 Oculus VR, LLC. All Rights reserved.
*************************************************************************************/
Copyright : Copyright 2014 Oculus VR, LLC. All Rights reserved.
*************************************************************************************/
package com.nintendont.virtualboygo;

import android.Manifest;
Expand All @@ -17,72 +15,102 @@
import android.os.BatteryManager;
import android.os.Bundle;
import android.os.Environment;
import android.provider.ContactsContract;
import android.support.v4.app.ActivityCompat;
import android.util.Log;
import android.content.Intent;

import com.oculus.vrappframework.VrActivity;

import android.support.v4.content.ContextCompat;

import java.io.File;

public class MainActivity extends VrActivity {
public static final String TAG = "VirtualBoyGo";
public static final String TAG = "VirtualBoyGo";

/** Load jni .so on initialization */
static {
Log.d(TAG, "LoadLibrary");
System.loadLibrary("ovrapp");
}
public String[] NeededPermissions = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
public static final int MY_PERMISSIONS_REQUEST_READ_CONTACTS = 123987;

public static native long nativeSetAppInterface( VrActivity act, String fromPackageNameString, String commandString, String uriString );
/** Load jni .so on initialization */
static {
Log.d(TAG, "LoadLibrary");
System.loadLibrary("ovrapp");
}

public static native long nativeSetAppInterface(VrActivity act, String fromPackageNameString, String commandString, String uriString);

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

Log.d("MainActivity", "ask for permission");
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR)
!= PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
Log.d("MainActivity", "permission granted");
} else {
Log.d("MainActivity", "permission not granted");
}
Log.d("MainActivity", "ask for permission");
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
// Permission is not granted
Log.d("MainActivity", "permission granted");
StartApp();
} else {
Log.d("MainActivity", "permission not granted");
ActivityCompat.requestPermissions(this, NeededPermissions, MY_PERMISSIONS_REQUEST_READ_CONTACTS);
}

Intent intent = getIntent();
String fromPackageNameString = VrActivity.getPackageStringFromIntent(intent);
String commandString = VrActivity.getCommandStringFromIntent(intent);
String uriString = VrActivity.getUriStringFromIntent(intent);

setAppPtr(nativeSetAppInterface(this, fromPackageNameString, commandString, uriString));
}

CreateFolder();
public void StartApp() {
CreateFolder();
}

Intent intent = getIntent();
String commandString = VrActivity.getCommandStringFromIntent( intent );
String fromPackageNameString = VrActivity.getPackageStringFromIntent( intent );
String uriString = VrActivity.getUriStringFromIntent( intent );
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
StartApp();
} else {
// permission denied, boo! Disable the
// functionality that depends on this permission.
}
return;
}
}
}

public void CreateFolder() {
Log.d("MainActivity", "create folder");
// states folder is needed to create state files
String storageDir = Environment.getExternalStorageDirectory().toString() + "/Roms/VB/States/";
File folder = new File(storageDir);

if (!folder.exists()) {
folder.mkdirs();
Log.d("MainActivity", "created emulator directory");
} else {
Log.d("MainActivity", "folder alread exists: " + storageDir);
}
}

public int GetBatteryLevel() {
Intent batteryIntent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

setAppPtr( nativeSetAppInterface( this, fromPackageNameString, commandString, uriString ) );
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);

return (int) ((level / (float) scale) * 100);
}

public String getExternalFilesDir() {
return this.getExternalFilesDir(null).toString();
}

public void CreateFolder() {
Log.d("MainActivity", "create folder");
// states folder is needed to create state files
String storageDir = Environment.getExternalStorageDirectory().toString() + "/Roms/VB/States/";
File folder = new File(storageDir);
if (!folder.exists()) {
folder.mkdirs();
Log.d("MainActivity", "created emulator directory");
}
}

public int GetBatteryLevel() {
Intent batteryIntent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);

return (int) ((level / (float) scale) * 100);
}

public String getExternalFilesDir() {
return this.getExternalFilesDir(null).toString();
}

public String getInternalStorageDir() {
return Environment.getExternalStorageDirectory().toString();
}
public String getInternalStorageDir() {
return Environment.getExternalStorageDirectory().toString();
}
}

0 comments on commit f9b2507

Please sign in to comment.