Loading core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -20475,6 +20475,7 @@ package android.media { field public static final int ENCODED_SURROUND_OUTPUT_AUTO = 0; // 0x0 field public static final int ENCODED_SURROUND_OUTPUT_MANUAL = 3; // 0x3 field public static final int ENCODED_SURROUND_OUTPUT_NEVER = 1; // 0x1 field public static final int ENCODED_SURROUND_OUTPUT_UNKNOWN = -1; // 0xffffffff field public static final int ERROR = -1; // 0xffffffff field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa field public static final String EXTRA_AUDIO_PLUG_STATE = "android.media.extra.AUDIO_PLUG_STATE"; core/java/android/provider/Settings.java +6 −0 Original line number Diff line number Diff line Loading @@ -13825,6 +13825,12 @@ public final class Settings { */ public static final int ENCODED_SURROUND_OUTPUT_MANUAL = 3; /** * The maximum value for surround sound output mode in Android S. * @hide */ public static final int ENCODED_SURROUND_SC_MAX = ENCODED_SURROUND_OUTPUT_MANUAL; /** * Set to ENCODED_SURROUND_OUTPUT_AUTO, * ENCODED_SURROUND_OUTPUT_NEVER, media/java/android/media/AudioManager.java +8 −1 Original line number Diff line number Diff line Loading @@ -569,6 +569,7 @@ public class AudioManager { /** @hide */ @IntDef(prefix = {"ENCODED_SURROUND_OUTPUT_"}, value = { ENCODED_SURROUND_OUTPUT_UNKNOWN, ENCODED_SURROUND_OUTPUT_AUTO, ENCODED_SURROUND_OUTPUT_NEVER, ENCODED_SURROUND_OUTPUT_ALWAYS, Loading @@ -577,6 +578,11 @@ public class AudioManager { @Retention(RetentionPolicy.SOURCE) public @interface EncodedSurroundOutputMode {} /** * The mode for surround sound formats is unknown. */ public static final int ENCODED_SURROUND_OUTPUT_UNKNOWN = -1; /** * The surround sound formats are available for use if they are detected. This is the default * mode. Loading Loading @@ -6873,7 +6879,8 @@ public class AudioManager { @RequiresPermission(android.Manifest.permission.WRITE_SETTINGS) public @EncodedSurroundOutputMode int getEncodedSurroundMode() { try { return getService().getEncodedSurroundMode(); return getService().getEncodedSurroundMode( getContext().getApplicationInfo().targetSdkVersion); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading media/java/android/media/IAudioService.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -164,7 +164,7 @@ interface IAudioService { boolean setEncodedSurroundMode(int mode); int getEncodedSurroundMode(); int getEncodedSurroundMode(int targetSdkVersion); oneway void avrcpSupportsAbsoluteVolume(String address, boolean support); Loading services/core/java/com/android/server/audio/AudioService.java +40 −4 Original line number Diff line number Diff line Loading @@ -1925,7 +1925,7 @@ public class AudioService extends IAudioService.Stub /** @see AudioManager#setEncodedSurroundMode(int) */ @Override public boolean setEncodedSurroundMode(int mode) { public boolean setEncodedSurroundMode(@AudioManager.EncodedSurroundOutputMode int mode) { if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Missing WRITE_SETTINGS permission"); Loading @@ -1936,7 +1936,7 @@ public class AudioService extends IAudioService.Stub synchronized (mSettingsLock) { Settings.Global.putInt(mContentResolver, Settings.Global.ENCODED_SURROUND_OUTPUT, mode); toEncodedSurroundSetting(mode)); } } finally { Binder.restoreCallingIdentity(token); Loading @@ -1946,7 +1946,7 @@ public class AudioService extends IAudioService.Stub /** @see AudioManager#getEncodedSurroundMode() */ @Override public int getEncodedSurroundMode() { public int getEncodedSurroundMode(int targetSdkVersion) { if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Missing WRITE_SETTINGS permission"); Loading @@ -1955,9 +1955,10 @@ public class AudioService extends IAudioService.Stub final long token = Binder.clearCallingIdentity(); try { synchronized (mSettingsLock) { return Settings.Global.getInt(mContentResolver, int encodedSurroundSetting = Settings.Global.getInt(mContentResolver, Settings.Global.ENCODED_SURROUND_OUTPUT, AudioManager.ENCODED_SURROUND_OUTPUT_AUTO); return toEncodedSurroundOutputMode(encodedSurroundSetting, targetSdkVersion); } } finally { Binder.restoreCallingIdentity(token); Loading @@ -1981,6 +1982,41 @@ public class AudioService extends IAudioService.Stub return formats; } @SuppressWarnings("AndroidFrameworkCompatChange") @AudioManager.EncodedSurroundOutputMode private int toEncodedSurroundOutputMode(int encodedSurroundSetting, int targetSdkVersion) { if (targetSdkVersion <= Build.VERSION_CODES.S && encodedSurroundSetting > Settings.Global.ENCODED_SURROUND_SC_MAX) { return AudioManager.ENCODED_SURROUND_OUTPUT_UNKNOWN; } switch (encodedSurroundSetting) { case Settings.Global.ENCODED_SURROUND_OUTPUT_AUTO: return AudioManager.ENCODED_SURROUND_OUTPUT_AUTO; case Settings.Global.ENCODED_SURROUND_OUTPUT_NEVER: return AudioManager.ENCODED_SURROUND_OUTPUT_NEVER; case Settings.Global.ENCODED_SURROUND_OUTPUT_ALWAYS: return AudioManager.ENCODED_SURROUND_OUTPUT_ALWAYS; case Settings.Global.ENCODED_SURROUND_OUTPUT_MANUAL: return AudioManager.ENCODED_SURROUND_OUTPUT_MANUAL; default: return AudioManager.ENCODED_SURROUND_OUTPUT_UNKNOWN; } } private int toEncodedSurroundSetting( @AudioManager.EncodedSurroundOutputMode int encodedSurroundOutputMode) { switch (encodedSurroundOutputMode) { case AudioManager.ENCODED_SURROUND_OUTPUT_NEVER: return Settings.Global.ENCODED_SURROUND_OUTPUT_NEVER; case AudioManager.ENCODED_SURROUND_OUTPUT_ALWAYS: return Settings.Global.ENCODED_SURROUND_OUTPUT_ALWAYS; case AudioManager.ENCODED_SURROUND_OUTPUT_MANUAL: return Settings.Global.ENCODED_SURROUND_OUTPUT_MANUAL; default: return Settings.Global.ENCODED_SURROUND_OUTPUT_AUTO; } } private boolean isSurroundFormat(int audioFormat) { for (int sf : AudioFormat.SURROUND_SOUND_ENCODING) { if (sf == audioFormat) { Loading Loading
core/api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -20475,6 +20475,7 @@ package android.media { field public static final int ENCODED_SURROUND_OUTPUT_AUTO = 0; // 0x0 field public static final int ENCODED_SURROUND_OUTPUT_MANUAL = 3; // 0x3 field public static final int ENCODED_SURROUND_OUTPUT_NEVER = 1; // 0x1 field public static final int ENCODED_SURROUND_OUTPUT_UNKNOWN = -1; // 0xffffffff field public static final int ERROR = -1; // 0xffffffff field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa field public static final String EXTRA_AUDIO_PLUG_STATE = "android.media.extra.AUDIO_PLUG_STATE";
core/java/android/provider/Settings.java +6 −0 Original line number Diff line number Diff line Loading @@ -13825,6 +13825,12 @@ public final class Settings { */ public static final int ENCODED_SURROUND_OUTPUT_MANUAL = 3; /** * The maximum value for surround sound output mode in Android S. * @hide */ public static final int ENCODED_SURROUND_SC_MAX = ENCODED_SURROUND_OUTPUT_MANUAL; /** * Set to ENCODED_SURROUND_OUTPUT_AUTO, * ENCODED_SURROUND_OUTPUT_NEVER,
media/java/android/media/AudioManager.java +8 −1 Original line number Diff line number Diff line Loading @@ -569,6 +569,7 @@ public class AudioManager { /** @hide */ @IntDef(prefix = {"ENCODED_SURROUND_OUTPUT_"}, value = { ENCODED_SURROUND_OUTPUT_UNKNOWN, ENCODED_SURROUND_OUTPUT_AUTO, ENCODED_SURROUND_OUTPUT_NEVER, ENCODED_SURROUND_OUTPUT_ALWAYS, Loading @@ -577,6 +578,11 @@ public class AudioManager { @Retention(RetentionPolicy.SOURCE) public @interface EncodedSurroundOutputMode {} /** * The mode for surround sound formats is unknown. */ public static final int ENCODED_SURROUND_OUTPUT_UNKNOWN = -1; /** * The surround sound formats are available for use if they are detected. This is the default * mode. Loading Loading @@ -6873,7 +6879,8 @@ public class AudioManager { @RequiresPermission(android.Manifest.permission.WRITE_SETTINGS) public @EncodedSurroundOutputMode int getEncodedSurroundMode() { try { return getService().getEncodedSurroundMode(); return getService().getEncodedSurroundMode( getContext().getApplicationInfo().targetSdkVersion); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } Loading
media/java/android/media/IAudioService.aidl +1 −1 Original line number Diff line number Diff line Loading @@ -164,7 +164,7 @@ interface IAudioService { boolean setEncodedSurroundMode(int mode); int getEncodedSurroundMode(); int getEncodedSurroundMode(int targetSdkVersion); oneway void avrcpSupportsAbsoluteVolume(String address, boolean support); Loading
services/core/java/com/android/server/audio/AudioService.java +40 −4 Original line number Diff line number Diff line Loading @@ -1925,7 +1925,7 @@ public class AudioService extends IAudioService.Stub /** @see AudioManager#setEncodedSurroundMode(int) */ @Override public boolean setEncodedSurroundMode(int mode) { public boolean setEncodedSurroundMode(@AudioManager.EncodedSurroundOutputMode int mode) { if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Missing WRITE_SETTINGS permission"); Loading @@ -1936,7 +1936,7 @@ public class AudioService extends IAudioService.Stub synchronized (mSettingsLock) { Settings.Global.putInt(mContentResolver, Settings.Global.ENCODED_SURROUND_OUTPUT, mode); toEncodedSurroundSetting(mode)); } } finally { Binder.restoreCallingIdentity(token); Loading @@ -1946,7 +1946,7 @@ public class AudioService extends IAudioService.Stub /** @see AudioManager#getEncodedSurroundMode() */ @Override public int getEncodedSurroundMode() { public int getEncodedSurroundMode(int targetSdkVersion) { if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS) != PackageManager.PERMISSION_GRANTED) { throw new SecurityException("Missing WRITE_SETTINGS permission"); Loading @@ -1955,9 +1955,10 @@ public class AudioService extends IAudioService.Stub final long token = Binder.clearCallingIdentity(); try { synchronized (mSettingsLock) { return Settings.Global.getInt(mContentResolver, int encodedSurroundSetting = Settings.Global.getInt(mContentResolver, Settings.Global.ENCODED_SURROUND_OUTPUT, AudioManager.ENCODED_SURROUND_OUTPUT_AUTO); return toEncodedSurroundOutputMode(encodedSurroundSetting, targetSdkVersion); } } finally { Binder.restoreCallingIdentity(token); Loading @@ -1981,6 +1982,41 @@ public class AudioService extends IAudioService.Stub return formats; } @SuppressWarnings("AndroidFrameworkCompatChange") @AudioManager.EncodedSurroundOutputMode private int toEncodedSurroundOutputMode(int encodedSurroundSetting, int targetSdkVersion) { if (targetSdkVersion <= Build.VERSION_CODES.S && encodedSurroundSetting > Settings.Global.ENCODED_SURROUND_SC_MAX) { return AudioManager.ENCODED_SURROUND_OUTPUT_UNKNOWN; } switch (encodedSurroundSetting) { case Settings.Global.ENCODED_SURROUND_OUTPUT_AUTO: return AudioManager.ENCODED_SURROUND_OUTPUT_AUTO; case Settings.Global.ENCODED_SURROUND_OUTPUT_NEVER: return AudioManager.ENCODED_SURROUND_OUTPUT_NEVER; case Settings.Global.ENCODED_SURROUND_OUTPUT_ALWAYS: return AudioManager.ENCODED_SURROUND_OUTPUT_ALWAYS; case Settings.Global.ENCODED_SURROUND_OUTPUT_MANUAL: return AudioManager.ENCODED_SURROUND_OUTPUT_MANUAL; default: return AudioManager.ENCODED_SURROUND_OUTPUT_UNKNOWN; } } private int toEncodedSurroundSetting( @AudioManager.EncodedSurroundOutputMode int encodedSurroundOutputMode) { switch (encodedSurroundOutputMode) { case AudioManager.ENCODED_SURROUND_OUTPUT_NEVER: return Settings.Global.ENCODED_SURROUND_OUTPUT_NEVER; case AudioManager.ENCODED_SURROUND_OUTPUT_ALWAYS: return Settings.Global.ENCODED_SURROUND_OUTPUT_ALWAYS; case AudioManager.ENCODED_SURROUND_OUTPUT_MANUAL: return Settings.Global.ENCODED_SURROUND_OUTPUT_MANUAL; default: return Settings.Global.ENCODED_SURROUND_OUTPUT_AUTO; } } private boolean isSurroundFormat(int audioFormat) { for (int sf : AudioFormat.SURROUND_SOUND_ENCODING) { if (sf == audioFormat) { Loading