diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 88e17ddc7fb35..254561ca1e6de 100755 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -81,6 +81,13 @@ 0 5 + + -6 + + + -6 + true diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 092b9953a2a13..17ea6b5075a0d 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -277,6 +277,8 @@ + + diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 5da30bd6fa4af..a69912d3d36f3 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -167,7 +167,6 @@ public class AudioService extends IAudioService.Stub implements OnFinished { private SoundPool mSoundPool; private final Object mSoundEffectsLock = new Object(); private static final int NUM_SOUNDPOOL_CHANNELS = 4; - private static final int SOUND_EFFECT_VOLUME = 1000; // Internally master volume is a float in the 0.0 - 1.0 range, // but to support integer based AudioManager API we translate it to 0 - 100 @@ -372,10 +371,8 @@ public class AudioService extends IAudioService.Stub implements OnFinished { private SoundPoolListenerThread mSoundPoolListenerThread; // message looper for SoundPool listener private Looper mSoundPoolLooper = null; - // default volume applied to sound played with playSoundEffect() - private static final int SOUND_EFFECT_DEFAULT_VOLUME_DB = 0; - // volume applied to sound played with playSoundEffect() read from ro.config.sound_fx_volume - private int SOUND_EFFECT_VOLUME_DB; + // volume applied to sound played with playSoundEffect() + private static int SOUND_EFFECT_VOLUME_DB; // getActiveStreamType() will return STREAM_NOTIFICATION during this period after a notification // stopped private static final int NOTIFICATION_VOLUME_DELAY_MS = 5000; @@ -422,9 +419,8 @@ public class AudioService extends IAudioService.Stub implements OnFinished { "ro.config.vc_call_vol_steps", MAX_STREAM_VOLUME[AudioSystem.STREAM_VOICE_CALL]); - SOUND_EFFECT_VOLUME_DB = SystemProperties.getInt( - "ro.config.sound_fx_volume", - SOUND_EFFECT_DEFAULT_VOLUME_DB); + SOUND_EFFECT_VOLUME_DB = context.getResources().getInteger( + com.android.internal.R.integer.config_soundEffectVolumeDb); mVolumePanel = new VolumePanel(context, this); mMode = AudioSystem.MODE_NORMAL; diff --git a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java index 11a1cd629660c..85156998a242d 100644 --- a/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java +++ b/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java @@ -251,7 +251,11 @@ public class KeyguardViewMediator implements KeyguardViewCallback, private int mLockSoundId; private int mUnlockSoundId; private int mLockSoundStreamId; - private int mMasterStreamMaxVolume; + + /** + * The volume applied to the lock/unlock sounds. + */ + private final float mLockSoundVolume; InfoCallbackImpl mInfoCallback = new InfoCallbackImpl() { @@ -329,6 +333,9 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (soundPath == null || mUnlockSoundId == 0) { if (DEBUG) Log.d(TAG, "failed to load sound from " + soundPath); } + int lockSoundDefaultAttenuation = context.getResources().getInteger( + com.android.internal.R.integer.config_lockSoundVolumeDb); + mLockSoundVolume = (float)Math.pow(10, lockSoundDefaultAttenuation/20); IntentFilter userFilter = new IntentFilter(); userFilter.addAction(Intent.ACTION_USER_SWITCHED); userFilter.addAction(Intent.ACTION_USER_REMOVED); @@ -1117,7 +1124,8 @@ public class KeyguardViewMediator implements KeyguardViewCallback, // If the stream is muted, don't play the sound if (mAudioManager.isStreamMute(mMasterStreamType)) return; - mLockSoundStreamId = mLockSounds.play(whichSound, 1.0f, 1.0f, 1, 0, 1.0f); + mLockSoundStreamId = mLockSounds.play(whichSound, + mLockSoundVolume, mLockSoundVolume, 1/*priortiy*/, 0/*loop*/, 1.0f/*rate*/); } }