diff options
| author | 2021-09-14 10:46:55 -0700 | |
|---|---|---|
| committer | 2021-09-14 13:11:58 -0700 | |
| commit | c5f69571efb2537b8fc312ce4ef9e93c39f19b71 (patch) | |
| tree | 6c4dfa3f1d19ea442510864bda2c3e717ad5af8a | |
| parent | a12a816a911be799c3f12ffc528cc46faf886c59 (diff) | |
AudioManager.getSpatializer() never returns null
Spatializer instance returned by AudioManager.getSpatializer()
is never null.
Instead of having this getter return null when the device
doesn't support spatialization, the user can query the
instance for it's level of support for the feature.
The level of support is independent of the state of the
spatializer.
Bug: 191404931
Test: atest SpatializerTest
Change-Id: Id08670749b4d34230313d2cd829aa5ba414dae21
| -rw-r--r-- | core/api/current.txt | 6 | ||||
| -rw-r--r-- | media/java/android/media/AudioManager.java | 11 | ||||
| -rw-r--r-- | media/java/android/media/Spatializer.java | 4 |
3 files changed, 8 insertions, 13 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index d684e4b82bbe..ec8dce0837cd 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -20454,7 +20454,7 @@ package android.media { method public String getProperty(String); method public int getRingerMode(); method @Deprecated public int getRouting(int); - method @Nullable public android.media.Spatializer getSpatializer(); + method @NonNull public android.media.Spatializer getSpatializer(); method public int getStreamMaxVolume(int); method public int getStreamMinVolume(int); method public int getStreamVolume(int); @@ -23854,9 +23854,13 @@ package android.media { public class Spatializer { method public void addOnSpatializerStateChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.Spatializer.OnSpatializerStateChangedListener); method public boolean canBeSpatialized(@NonNull android.media.AudioAttributes, @NonNull android.media.AudioFormat); + method public int getImmersiveAudioLevel(); method public boolean isAvailable(); method public boolean isEnabled(); method public void removeOnSpatializerStateChangedListener(@NonNull android.media.Spatializer.OnSpatializerStateChangedListener); + field public static final int SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL = 1; // 0x1 + field public static final int SPATIALIZER_IMMERSIVE_LEVEL_NONE = 0; // 0x0 + field public static final int SPATIALIZER_IMMERSIVE_LEVEL_OTHER = -1; // 0xffffffff } public static interface Spatializer.OnSpatializerStateChangedListener { diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index ee75a8d6f4b2..38f9607c9529 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -2444,15 +2444,10 @@ public class AudioManager { /** * Return a handle to the optional platform's {@link Spatializer} * @return the {@code Spatializer} instance. + * @see Spatializer#getImmersiveAudioLevel() to check for the level of support of the effect + * on the platform */ - public @Nullable Spatializer getSpatializer() { - int level = Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE; - try { - level = getService().getSpatializerImmersiveAudioLevel(); - } catch (Exception e) { /* using NONE */ } - if (level == Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE) { - return null; - } + public @NonNull Spatializer getSpatializer() { return new Spatializer(this); } diff --git a/media/java/android/media/Spatializer.java b/media/java/android/media/Spatializer.java index c64bf2c60117..d8519b689a56 100644 --- a/media/java/android/media/Spatializer.java +++ b/media/java/android/media/Spatializer.java @@ -122,7 +122,6 @@ public class Spatializer { public @interface ImmersiveAudioLevel {}; /** - * @hide * Constant indicating the {@code Spatializer} on this device supports a spatialization * mode that differs from the ones available at this SDK level. * @see #getImmersiveAudioLevel() @@ -130,14 +129,12 @@ public class Spatializer { public static final int SPATIALIZER_IMMERSIVE_LEVEL_OTHER = -1; /** - * @hide * Constant indicating there are no spatialization capabilities supported on this device. * @see #getImmersiveAudioLevel() */ public static final int SPATIALIZER_IMMERSIVE_LEVEL_NONE = 0; /** - * @hide * Constant indicating the {@code Spatializer} on this device supports multichannel * spatialization. * @see #getImmersiveAudioLevel() @@ -145,7 +142,6 @@ public class Spatializer { public static final int SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL = 1; /** - * @hide * Return the level of support for the spatialization feature on this device. * This level of support is independent of whether the {@code Spatializer} is currently * enabled or available and will not change over time. |