Merge "AudioManager.getSpatializer() never returns null" into sc-v2-dev
diff --git a/core/api/current.txt b/core/api/current.txt
index d684e4b..ec8dce0 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -20454,7 +20454,7 @@
     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 @@
   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 ee75a8d..38f9607 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -2444,15 +2444,10 @@
     /**
      * 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 c64bf2c..d8519b6 100644
--- a/media/java/android/media/Spatializer.java
+++ b/media/java/android/media/Spatializer.java
@@ -122,7 +122,6 @@
     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 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 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.