diff --git a/core/api/test-current.txt b/core/api/test-current.txt index dd7c6db5d8fbe..a0799394177dc 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -1421,6 +1421,7 @@ package android.media { method @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public int abandonAudioFocusForTest(@NonNull android.media.AudioFocusRequest, @NonNull String); method @Nullable public static android.media.AudioDeviceInfo getDeviceInfoFromType(int); method @IntRange(from=0) @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public long getFadeOutDurationOnFocusLossMillis(@NonNull android.media.AudioAttributes); + method @NonNull public java.util.List getReportedSurroundFormats(); method @NonNull public java.util.Map getSurroundFormats(); method public boolean hasRegisteredDynamicPolicy(); method @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, android.Manifest.permission.QUERY_AUDIO_STATE}) public boolean isFullVolumeDevice(); diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index bd3ca5a80f96f..3b9c05bbe64f2 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -7062,14 +7062,11 @@ public class AudioManager { @TestApi @NonNull public Map getSurroundFormats() { - Map surroundFormats = new HashMap<>(); - int status = AudioSystem.getSurroundFormats(surroundFormats); - if (status != AudioManager.SUCCESS) { - // fail and bail! - Log.e(TAG, "getSurroundFormats failed:" + status); - return new HashMap(); // Always return a map. + try { + return getService().getSurroundFormats(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return surroundFormats; } /** @@ -7116,15 +7113,14 @@ public class AudioManager { * * @return a list of surround formats */ - public ArrayList getReportedSurroundFormats() { - ArrayList reportedSurroundFormats = new ArrayList<>(); - int status = AudioSystem.getReportedSurroundFormats(reportedSurroundFormats); - if (status != AudioManager.SUCCESS) { - // fail and bail! - Log.e(TAG, "getReportedSurroundFormats failed:" + status); - return new ArrayList(); // Always return a list. + @TestApi + @NonNull + public List getReportedSurroundFormats() { + try { + return getService().getReportedSurroundFormats(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); } - return reportedSurroundFormats; } /** diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl index c08c368af55aa..0b35ebed966ae 100755 --- a/media/java/android/media/IAudioService.aidl +++ b/media/java/android/media/IAudioService.aidl @@ -159,6 +159,10 @@ interface IAudioService { oneway void reloadAudioSettings(); + Map getSurroundFormats(); + + List getReportedSurroundFormats(); + boolean setSurroundFormatEnabled(int audioFormat, boolean enabled); boolean isSurroundFormatEnabled(int audioFormat); diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 91283b9c6ccca..f7d091498456f 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -1930,6 +1930,32 @@ public class AudioService extends IAudioService.Stub } } + /** @see AudioManager#getSurroundFormats() */ + @Override + public Map getSurroundFormats() { + Map surroundFormats = new HashMap<>(); + int status = AudioSystem.getSurroundFormats(surroundFormats); + if (status != AudioManager.SUCCESS) { + // fail and bail! + Log.e(TAG, "getSurroundFormats failed:" + status); + return new HashMap<>(); // Always return a map. + } + return surroundFormats; + } + + /** @see AudioManager#getReportedSurroundFormats() */ + @Override + public List getReportedSurroundFormats() { + ArrayList reportedSurroundFormats = new ArrayList<>(); + int status = AudioSystem.getReportedSurroundFormats(reportedSurroundFormats); + if (status != AudioManager.SUCCESS) { + // fail and bail! + Log.e(TAG, "getReportedSurroundFormats failed:" + status); + return new ArrayList<>(); // Always return a list. + } + return reportedSurroundFormats; + } + /** @see AudioManager#isSurroundFormatEnabled(int) */ @Override public boolean isSurroundFormatEnabled(int audioFormat) {