Merge "Adding unknown constant to AudioManager ENCODED_SURROUND_OUTPUT mode constants" into sc-dev

This commit is contained in:
Kriti Dang
2021-04-09 12:51:31 +00:00
committed by Android (Google) Code Review
5 changed files with 56 additions and 6 deletions

View File

@@ -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_AUTO = 0; // 0x0
field public static final int ENCODED_SURROUND_OUTPUT_MANUAL = 3; // 0x3 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_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 = -1; // 0xffffffff
field public static final int ERROR_DEAD_OBJECT = -6; // 0xfffffffa 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"; field public static final String EXTRA_AUDIO_PLUG_STATE = "android.media.extra.AUDIO_PLUG_STATE";

View File

@@ -13825,6 +13825,12 @@ public final class Settings {
*/ */
public static final int ENCODED_SURROUND_OUTPUT_MANUAL = 3; 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, * Set to ENCODED_SURROUND_OUTPUT_AUTO,
* ENCODED_SURROUND_OUTPUT_NEVER, * ENCODED_SURROUND_OUTPUT_NEVER,

View File

@@ -569,6 +569,7 @@ public class AudioManager {
/** @hide */ /** @hide */
@IntDef(prefix = {"ENCODED_SURROUND_OUTPUT_"}, value = { @IntDef(prefix = {"ENCODED_SURROUND_OUTPUT_"}, value = {
ENCODED_SURROUND_OUTPUT_UNKNOWN,
ENCODED_SURROUND_OUTPUT_AUTO, ENCODED_SURROUND_OUTPUT_AUTO,
ENCODED_SURROUND_OUTPUT_NEVER, ENCODED_SURROUND_OUTPUT_NEVER,
ENCODED_SURROUND_OUTPUT_ALWAYS, ENCODED_SURROUND_OUTPUT_ALWAYS,
@@ -577,6 +578,11 @@ public class AudioManager {
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface EncodedSurroundOutputMode {} 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 * The surround sound formats are available for use if they are detected. This is the default
* mode. * mode.
@@ -6873,7 +6879,8 @@ public class AudioManager {
@RequiresPermission(android.Manifest.permission.WRITE_SETTINGS) @RequiresPermission(android.Manifest.permission.WRITE_SETTINGS)
public @EncodedSurroundOutputMode int getEncodedSurroundMode() { public @EncodedSurroundOutputMode int getEncodedSurroundMode() {
try { try {
return getService().getEncodedSurroundMode(); return getService().getEncodedSurroundMode(
getContext().getApplicationInfo().targetSdkVersion);
} catch (RemoteException e) { } catch (RemoteException e) {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }

View File

@@ -164,7 +164,7 @@ interface IAudioService {
boolean setEncodedSurroundMode(int mode); boolean setEncodedSurroundMode(int mode);
int getEncodedSurroundMode(); int getEncodedSurroundMode(int targetSdkVersion);
oneway void avrcpSupportsAbsoluteVolume(String address, boolean support); oneway void avrcpSupportsAbsoluteVolume(String address, boolean support);

View File

@@ -1925,7 +1925,7 @@ public class AudioService extends IAudioService.Stub
/** @see AudioManager#setEncodedSurroundMode(int) */ /** @see AudioManager#setEncodedSurroundMode(int) */
@Override @Override
public boolean setEncodedSurroundMode(int mode) { public boolean setEncodedSurroundMode(@AudioManager.EncodedSurroundOutputMode int mode) {
if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS) if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS)
!= PackageManager.PERMISSION_GRANTED) { != PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Missing WRITE_SETTINGS permission"); throw new SecurityException("Missing WRITE_SETTINGS permission");
@@ -1936,7 +1936,7 @@ public class AudioService extends IAudioService.Stub
synchronized (mSettingsLock) { synchronized (mSettingsLock) {
Settings.Global.putInt(mContentResolver, Settings.Global.putInt(mContentResolver,
Settings.Global.ENCODED_SURROUND_OUTPUT, Settings.Global.ENCODED_SURROUND_OUTPUT,
mode); toEncodedSurroundSetting(mode));
} }
} finally { } finally {
Binder.restoreCallingIdentity(token); Binder.restoreCallingIdentity(token);
@@ -1946,7 +1946,7 @@ public class AudioService extends IAudioService.Stub
/** @see AudioManager#getEncodedSurroundMode() */ /** @see AudioManager#getEncodedSurroundMode() */
@Override @Override
public int getEncodedSurroundMode() { public int getEncodedSurroundMode(int targetSdkVersion) {
if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS) if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.WRITE_SETTINGS)
!= PackageManager.PERMISSION_GRANTED) { != PackageManager.PERMISSION_GRANTED) {
throw new SecurityException("Missing WRITE_SETTINGS permission"); throw new SecurityException("Missing WRITE_SETTINGS permission");
@@ -1955,9 +1955,10 @@ public class AudioService extends IAudioService.Stub
final long token = Binder.clearCallingIdentity(); final long token = Binder.clearCallingIdentity();
try { try {
synchronized (mSettingsLock) { synchronized (mSettingsLock) {
return Settings.Global.getInt(mContentResolver, int encodedSurroundSetting = Settings.Global.getInt(mContentResolver,
Settings.Global.ENCODED_SURROUND_OUTPUT, Settings.Global.ENCODED_SURROUND_OUTPUT,
AudioManager.ENCODED_SURROUND_OUTPUT_AUTO); AudioManager.ENCODED_SURROUND_OUTPUT_AUTO);
return toEncodedSurroundOutputMode(encodedSurroundSetting, targetSdkVersion);
} }
} finally { } finally {
Binder.restoreCallingIdentity(token); Binder.restoreCallingIdentity(token);
@@ -1981,6 +1982,41 @@ public class AudioService extends IAudioService.Stub
return formats; 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) { private boolean isSurroundFormat(int audioFormat) {
for (int sf : AudioFormat.SURROUND_SOUND_ENCODING) { for (int sf : AudioFormat.SURROUND_SOUND_ENCODING) {
if (sf == audioFormat) { if (sf == audioFormat) {