Merge "Adding unknown constant to AudioManager ENCODED_SURROUND_OUTPUT mode constants" into sc-dev
This commit is contained in:
@@ -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";
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
@@ -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.
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ interface IAudioService {
|
||||
|
||||
boolean setEncodedSurroundMode(int mode);
|
||||
|
||||
int getEncodedSurroundMode();
|
||||
int getEncodedSurroundMode(int targetSdkVersion);
|
||||
|
||||
oneway void avrcpSupportsAbsoluteVolume(String address, boolean support);
|
||||
|
||||
|
||||
@@ -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");
|
||||
@@ -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);
|
||||
@@ -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");
|
||||
@@ -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);
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user