diff options
author | 2025-02-18 10:25:14 -0800 | |
---|---|---|
committer | 2025-02-18 10:25:14 -0800 | |
commit | 855f22d9cf5bba07186e8db8a08c8d14818cbad3 (patch) | |
tree | 95db198b064e55021a4c52d4b991df51998a1757 | |
parent | 09526194e311ecf09e0d9c9f7f83d82f8099fc6b (diff) | |
parent | 41373489695fe02c3b426d1e478c1c2df9ec34a7 (diff) |
Merge "Add UsbManager @TestApi to check whether UVC gadget is enabled" into main
-rw-r--r-- | core/api/test-current.txt | 4 | ||||
-rw-r--r-- | core/java/android/hardware/usb/IUsbManager.aidl | 3 | ||||
-rw-r--r-- | core/java/android/hardware/usb/UsbManager.java | 18 | ||||
-rw-r--r-- | services/usb/java/com/android/server/usb/UsbService.java | 6 |
4 files changed, 31 insertions, 0 deletions
diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 975c2c27cb22..89b377314887 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -1915,6 +1915,10 @@ package android.hardware.soundtrigger { package android.hardware.usb { + public class UsbManager { + method public boolean isUvcGadgetSupportEnabled(); + } + public final class UsbPort { method @FlaggedApi("android.hardware.usb.flags.enable_is_mode_change_supported_api") @RequiresPermission(android.Manifest.permission.MANAGE_USB) public boolean isModeChangeSupported(); } diff --git a/core/java/android/hardware/usb/IUsbManager.aidl b/core/java/android/hardware/usb/IUsbManager.aidl index c0e506b05a64..21d3ef0ea660 100644 --- a/core/java/android/hardware/usb/IUsbManager.aidl +++ b/core/java/android/hardware/usb/IUsbManager.aidl @@ -126,6 +126,9 @@ interface IUsbManager /* Returns true if the specified USB function is enabled. */ boolean isFunctionEnabled(String function); + /* Returns true if UVC gadget support is enabled. */ + boolean isUvcGadgetSupportEnabled(); + /* Sets the current USB function. */ @EnforcePermission("MANAGE_USB") void setCurrentFunctions(long functions, int operationId); diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java index d2e232a94622..a005e334f402 100644 --- a/core/java/android/hardware/usb/UsbManager.java +++ b/core/java/android/hardware/usb/UsbManager.java @@ -30,8 +30,10 @@ import android.annotation.RequiresFeature; import android.annotation.RequiresPermission; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; +import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.SystemService; +import android.annotation.TestApi; import android.app.PendingIntent; import android.compat.annotation.UnsupportedAppUsage; import android.content.ComponentName; @@ -1437,6 +1439,21 @@ public class UsbManager { } /** + * Returns true if the specified UVC gadget function support is enabled. + * <p> + * @hide + */ + @TestApi + @SuppressLint("UnflaggedApi") // @TestApi without associated feature. + public boolean isUvcGadgetSupportEnabled() { + try { + return mService.isUvcGadgetSupportEnabled(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** * Sets the current USB functions when in device mode. * <p> * USB functions represent interfaces which are published to the host to access @@ -1641,6 +1658,7 @@ public class UsbManager { } } + // TODO: b/396680593 Deprecate to de-dup with isUvcGadgetSupportEnabled() /** * Returns whether UVC is advertised to be supported or not. SELinux * enforces that this function returns {@code false} when called from a diff --git a/services/usb/java/com/android/server/usb/UsbService.java b/services/usb/java/com/android/server/usb/UsbService.java index ec4f7e1ea4ba..4395b76d91cc 100644 --- a/services/usb/java/com/android/server/usb/UsbService.java +++ b/services/usb/java/com/android/server/usb/UsbService.java @@ -52,6 +52,7 @@ import android.os.Bundle; import android.os.Looper; import android.os.ParcelFileDescriptor; import android.os.RemoteException; +import android.os.SystemProperties; import android.os.UserHandle; import android.os.UserManager; import android.service.usb.UsbServiceDumpProto; @@ -694,6 +695,11 @@ public class UsbService extends IUsbManager.Stub { return (getCurrentFunctions() & UsbManager.usbFunctionsFromString(function)) != 0; } + @Override + public boolean isUvcGadgetSupportEnabled() { + return SystemProperties.getBoolean("ro.usb.uvc.enabled", false); + } + @android.annotation.EnforcePermission(android.Manifest.permission.MANAGE_USB) @Override public long getCurrentFunctions() { |