You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-04 12:00:25 +00:00
Fix the CAMERA permission request on HorizonOS devices
This commit is contained in:
@@ -37,6 +37,16 @@ package org.godotengine.editor
|
|||||||
*/
|
*/
|
||||||
open class GodotEditor : BaseGodotEditor() {
|
open class GodotEditor : BaseGodotEditor() {
|
||||||
|
|
||||||
|
override fun getExcludedPermissions(): MutableSet<String> {
|
||||||
|
val excludedPermissions = super.getExcludedPermissions().apply {
|
||||||
|
// The AVATAR_CAMERA and HEADSET_CAMERA permissions are requested when `CameraFeed.feed_is_active`
|
||||||
|
// is enabled.
|
||||||
|
add("horizonos.permission.AVATAR_CAMERA")
|
||||||
|
add("horizonos.permission.HEADSET_CAMERA")
|
||||||
|
}
|
||||||
|
return excludedPermissions
|
||||||
|
}
|
||||||
|
|
||||||
override fun getXRRuntimePermissions(): MutableSet<String> {
|
override fun getXRRuntimePermissions(): MutableSet<String> {
|
||||||
val xrRuntimePermissions = super.getXRRuntimePermissions()
|
val xrRuntimePermissions = super.getXRRuntimePermissions()
|
||||||
xrRuntimePermissions.add("com.oculus.permission.USE_SCENE")
|
xrRuntimePermissions.add("com.oculus.permission.USE_SCENE")
|
||||||
|
|||||||
@@ -185,16 +185,14 @@ abstract class BaseGodotEditor : GodotActivity(), GameMenuFragment.GameMenuListe
|
|||||||
*
|
*
|
||||||
* The permissions in this set will be requested on demand based on use cases.
|
* The permissions in this set will be requested on demand based on use cases.
|
||||||
*/
|
*/
|
||||||
private fun getExcludedPermissions(): MutableSet<String> {
|
@CallSuper
|
||||||
|
protected open fun getExcludedPermissions(): MutableSet<String> {
|
||||||
val excludedPermissions = mutableSetOf(
|
val excludedPermissions = mutableSetOf(
|
||||||
// The RECORD_AUDIO permission is requested when the "audio/driver/enable_input" project
|
// The RECORD_AUDIO permission is requested when the "audio/driver/enable_input" project
|
||||||
// setting is enabled.
|
// setting is enabled.
|
||||||
Manifest.permission.RECORD_AUDIO,
|
Manifest.permission.RECORD_AUDIO,
|
||||||
// The CAMERA permission is requested when `CameraFeed.feed_is_active` is enabled.
|
// The CAMERA permission is requested when `CameraFeed.feed_is_active` is enabled.
|
||||||
Manifest.permission.CAMERA,
|
Manifest.permission.CAMERA,
|
||||||
)
|
|
||||||
|
|
||||||
excludedPermissions.add(
|
|
||||||
// The REQUEST_INSTALL_PACKAGES permission is requested the first time we attempt to
|
// The REQUEST_INSTALL_PACKAGES permission is requested the first time we attempt to
|
||||||
// open an apk file.
|
// open an apk file.
|
||||||
Manifest.permission.REQUEST_INSTALL_PACKAGES,
|
Manifest.permission.REQUEST_INSTALL_PACKAGES,
|
||||||
|
|||||||
@@ -148,31 +148,36 @@ public final class PermissionsUtil {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final List<String> permissions = new ArrayList<>();
|
||||||
|
|
||||||
final int requestCode;
|
final int requestCode;
|
||||||
final String updatedPermissionName;
|
|
||||||
switch (permissionName) {
|
switch (permissionName) {
|
||||||
case "RECORD_AUDIO":
|
case "RECORD_AUDIO":
|
||||||
updatedPermissionName = Manifest.permission.RECORD_AUDIO;
|
permissions.add(Manifest.permission.RECORD_AUDIO);
|
||||||
requestCode = REQUEST_RECORD_AUDIO_PERMISSION;
|
requestCode = REQUEST_RECORD_AUDIO_PERMISSION;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "CAMERA":
|
case "CAMERA":
|
||||||
updatedPermissionName = Manifest.permission.CAMERA;
|
permissions.add(Manifest.permission.CAMERA);
|
||||||
|
if (DeviceUtils.isHorizonOSDevice(activity)) {
|
||||||
|
// On HorizonOS, these permissions are required to get access to all the device's cameras.
|
||||||
|
permissions.add("horizonos.permission.AVATAR_CAMERA");
|
||||||
|
permissions.add("horizonos.permission.HEADSET_CAMERA");
|
||||||
|
}
|
||||||
requestCode = REQUEST_CAMERA_PERMISSION;
|
requestCode = REQUEST_CAMERA_PERMISSION;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "VIBRATE":
|
case "VIBRATE":
|
||||||
updatedPermissionName = Manifest.permission.VIBRATE;
|
permissions.add(Manifest.permission.VIBRATE);
|
||||||
requestCode = REQUEST_VIBRATE_PERMISSION;
|
requestCode = REQUEST_VIBRATE_PERMISSION;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
updatedPermissionName = permissionName;
|
permissions.add(permissionName);
|
||||||
requestCode = REQUEST_SINGLE_PERMISSION_REQ_CODE;
|
requestCode = REQUEST_SINGLE_PERMISSION_REQ_CODE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> permissions = Collections.singletonList(updatedPermissionName);
|
|
||||||
return requestPermissions(activity, permissions, requestCode);
|
return requestPermissions(activity, permissions, requestCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user