You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-05 12:10:55 +00:00
Add support for the OpenXR Eye gaze interaction extension
Co-authored-by: Bastiaan Olij <mux213@gmail.com>
This commit is contained in:
committed by
Fredia Huya-Kouadio
parent
a2f90d565a
commit
9e56e7a3ce
@@ -927,6 +927,19 @@ class Godot(private val context: Context) : SensorEventListener {
|
||||
return PermissionsUtil.getGrantedPermissions(getActivity())
|
||||
}
|
||||
|
||||
/**
|
||||
* Return true if the given feature is supported.
|
||||
*/
|
||||
@Keep
|
||||
private fun hasFeature(feature: String): Boolean {
|
||||
for (plugin in pluginRegistry.allPlugins) {
|
||||
if (plugin.supportsFeature(feature)) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the list of gdextension modules to register.
|
||||
*/
|
||||
|
||||
@@ -30,12 +30,15 @@
|
||||
|
||||
package org.godotengine.godot
|
||||
|
||||
import android.Manifest
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.content.pm.PackageManager
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.annotation.CallSuper
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import org.godotengine.godot.utils.PermissionsUtil
|
||||
import org.godotengine.godot.utils.ProcessPhoenix
|
||||
|
||||
/**
|
||||
@@ -62,6 +65,10 @@ abstract class GodotActivity : FragmentActivity(), GodotHost {
|
||||
private set
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
// We exclude certain permissions from the set we request at startup, as they'll be
|
||||
// requested on demand based on use-cases.
|
||||
PermissionsUtil.requestManifestPermissions(this, setOf(Manifest.permission.RECORD_AUDIO))
|
||||
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.godot_app_layout)
|
||||
|
||||
@@ -148,6 +155,14 @@ abstract class GodotActivity : FragmentActivity(), GodotHost {
|
||||
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>, grantResults: IntArray) {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||
godotFragment?.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
||||
|
||||
if (requestCode == PermissionsUtil.REQUEST_ALL_PERMISSION_REQ_CODE) {
|
||||
Log.d(TAG, "Received permissions request result..")
|
||||
for (i in permissions.indices) {
|
||||
val permissionGranted = grantResults[i] == PackageManager.PERMISSION_GRANTED
|
||||
Log.d(TAG, "Permission ${permissions[i]} ${if (permissionGranted) { "granted"} else { "denied" }}")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onBackPressed() {
|
||||
|
||||
@@ -315,6 +315,15 @@ public abstract class GodotPlugin {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the plugin supports the given feature tag.
|
||||
*
|
||||
* @see <a href="https://docs.godotengine.org/en/stable/tutorials/export/feature_tags.html">Feature tags</a>
|
||||
*/
|
||||
public boolean supportsFeature(String featureTag) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs the specified action on the UI thread. If the current thread is the UI
|
||||
* thread, then the action is executed immediately. If the current thread is
|
||||
|
||||
@@ -160,6 +160,7 @@ public final class PermissionsUtil {
|
||||
try {
|
||||
if (manifestPermission.equals(Manifest.permission.MANAGE_EXTERNAL_STORAGE)) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && !Environment.isExternalStorageManager()) {
|
||||
Log.d(TAG, "Requesting permission " + manifestPermission);
|
||||
try {
|
||||
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
|
||||
intent.setData(Uri.parse(String.format("package:%s", activity.getPackageName())));
|
||||
@@ -173,6 +174,7 @@ public final class PermissionsUtil {
|
||||
PermissionInfo permissionInfo = getPermissionInfo(activity, manifestPermission);
|
||||
int protectionLevel = Build.VERSION.SDK_INT >= Build.VERSION_CODES.P ? permissionInfo.getProtection() : permissionInfo.protectionLevel;
|
||||
if (protectionLevel == PermissionInfo.PROTECTION_DANGEROUS && ContextCompat.checkSelfPermission(activity, manifestPermission) != PackageManager.PERMISSION_GRANTED) {
|
||||
Log.d(TAG, "Requesting permission " + manifestPermission);
|
||||
requestedPermissions.add(manifestPermission);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user