diff options
-rw-r--r-- | api/current.txt | 1 | ||||
-rw-r--r-- | media/java/android/media/AudioManager.java | 46 |
2 files changed, 44 insertions, 3 deletions
diff --git a/api/current.txt b/api/current.txt index 648b900..4716847 100644 --- a/api/current.txt +++ b/api/current.txt @@ -13819,6 +13819,7 @@ package android.media { method public boolean isMicrophoneMute(); method public boolean isMusicActive(); method public boolean isSpeakerphoneOn(); + method public boolean isVolumeFixed(); method public deprecated boolean isWiredHeadsetOn(); method public void loadSoundEffects(); method public void playSoundEffect(int); diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index c8b51e0..98a575a 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -54,6 +54,7 @@ public class AudioManager { private long mVolumeKeyUpTime; private final boolean mUseMasterVolume; private final boolean mUseVolumeKeySounds; + private final boolean mUseFixedVolume; private final Binder mToken = new Binder(); private static String TAG = "AudioManager"; AudioPortEventHandler mAudioPortEventHandler; @@ -441,6 +442,8 @@ public class AudioManager { mUseVolumeKeySounds = mContext.getResources().getBoolean( com.android.internal.R.bool.config_useVolumeKeySounds); mAudioPortEventHandler = new AudioPortEventHandler(this); + mUseFixedVolume = mContext.getResources().getBoolean( + com.android.internal.R.bool.config_useFixedVolume); } private static IAudioService getService() @@ -577,6 +580,26 @@ public class AudioManager { } /** + * Indicates if the device implements a fixed volume policy. + * <p>Some devices may not have volume control and may operate at a fixed volume, + * and may not enable muting or changing the volume of audio streams. + * This method will return true on such devices. + * <p>The following APIs have no effect when volume is fixed: + * <ul> + * <li> {@link #adjustVolume(int, int)} + * <li> {@link #adjustSuggestedStreamVolume(int, int, int)} + * <li> {@link #adjustStreamVolume(int, int, int)} + * <li> {@link #setStreamVolume(int, int, int)} + * <li> {@link #setRingerMode(int)} + * <li> {@link #setStreamSolo(int, boolean)} + * <li> {@link #setStreamMute(int, boolean)} + * </ul> + */ + public boolean isVolumeFixed() { + return mUseFixedVolume; + } + + /** * Adjusts the volume of a particular stream by one step in a direction. * <p> * This method should only be used by applications that replace the platform-wide @@ -614,7 +637,8 @@ public class AudioManager { * <p> * This method should only be used by applications that replace the platform-wide * management of audio settings or the main telephony application. - * + * <p>This method has no effect if the device implements a fixed volume policy + * as indicated by {@link #isVolumeFixed()}. * @param direction The direction to adjust the volume. One of * {@link #ADJUST_LOWER}, {@link #ADJUST_RAISE}, or * {@link #ADJUST_SAME}. @@ -622,6 +646,7 @@ public class AudioManager { * @see #adjustSuggestedStreamVolume(int, int, int) * @see #adjustStreamVolume(int, int, int) * @see #setStreamVolume(int, int, int) + * @see #isVolumeFixed() */ public void adjustVolume(int direction, int flags) { IAudioService service = getService(); @@ -644,6 +669,8 @@ public class AudioManager { * This method should only be used by applications that replace the platform-wide * management of audio settings or the main telephony application. * + * <p>This method has no effect if the device implements a fixed volume policy + * as indicated by {@link #isVolumeFixed()}. * @param direction The direction to adjust the volume. One of * {@link #ADJUST_LOWER}, {@link #ADJUST_RAISE}, or * {@link #ADJUST_SAME}. @@ -653,6 +680,7 @@ public class AudioManager { * @see #adjustVolume(int, int) * @see #adjustStreamVolume(int, int, int) * @see #setStreamVolume(int, int, int) + * @see #isVolumeFixed() */ public void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags) { IAudioService service = getService(); @@ -801,10 +829,12 @@ public class AudioManager { * Silent mode will mute the volume and will not vibrate. Vibrate mode will * mute the volume and vibrate. Normal mode will be audible and may vibrate * according to user settings. - * + * <p>This method has no effect if the device implements a fixed volume policy + * as indicated by {@link #isVolumeFixed()}. * @param ringerMode The ringer mode, one of {@link #RINGER_MODE_NORMAL}, * {@link #RINGER_MODE_SILENT}, or {@link #RINGER_MODE_VIBRATE}. * @see #getRingerMode() + * @see #isVolumeFixed() */ public void setRingerMode(int ringerMode) { if (!isValidRingerMode(ringerMode)) { @@ -820,13 +850,15 @@ public class AudioManager { /** * Sets the volume index for a particular stream. - * + * <p>This method has no effect if the device implements a fixed volume policy + * as indicated by {@link #isVolumeFixed()}. * @param streamType The stream whose volume index should be set. * @param index The volume index to set. See * {@link #getStreamMaxVolume(int)} for the largest valid value. * @param flags One or more flags. * @see #getStreamMaxVolume(int) * @see #getStreamVolume(int) + * @see #isVolumeFixed() */ public void setStreamVolume(int streamType, int index, int flags) { IAudioService service = getService(); @@ -919,9 +951,13 @@ public class AudioManager { * <p> * For a better user experience, applications MUST unsolo a soloed stream * in onPause() and solo is again in onResume() if appropriate. + * <p>This method has no effect if the device implements a fixed volume policy + * as indicated by {@link #isVolumeFixed()}. * * @param streamType The stream to be soloed/unsoloed. * @param state The required solo state: true for solo ON, false for solo OFF + * + * @see #isVolumeFixed() */ public void setStreamSolo(int streamType, boolean state) { IAudioService service = getService(); @@ -948,9 +984,13 @@ public class AudioManager { * <p> * This method should only be used by applications that replace the platform-wide * management of audio settings or the main telephony application. + * <p>This method has no effect if the device implements a fixed volume policy + * as indicated by {@link #isVolumeFixed()}. * * @param streamType The stream to be muted/unmuted. * @param state The required mute state: true for mute ON, false for mute OFF + * + * @see #isVolumeFixed() */ public void setStreamMute(int streamType, boolean state) { IAudioService service = getService(); |