From db783bdff33bbfcf825ec27d1b1af1fe7b3045e3 Mon Sep 17 00:00:00 2001 From: Daniel Sandler Date: Thu, 11 Feb 2010 15:27:37 -0500 Subject: Support for lockscreen/keyguard sound effects. See sibling change to frameworks/base (including basic lockscreen sounds). Change-Id: I62bb16b90c47353a3ca4a531e7f7d5b446486dde --- .../internal/policy/impl/KeyguardViewMediator.java | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/policy/com/android/internal/policy/impl/KeyguardViewMediator.java b/policy/com/android/internal/policy/impl/KeyguardViewMediator.java index b35b3fc..c8e8cd4 100644 --- a/policy/com/android/internal/policy/impl/KeyguardViewMediator.java +++ b/policy/com/android/internal/policy/impl/KeyguardViewMediator.java @@ -24,9 +24,13 @@ import android.app.AlarmManager; import android.app.PendingIntent; import android.app.StatusBarManager; import android.content.BroadcastReceiver; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.media.Ringtone; +import android.media.RingtoneManager; +import android.net.Uri; import android.os.Handler; import android.os.IBinder; import android.os.LocalPowerManager; @@ -35,6 +39,7 @@ import android.os.PowerManager; import android.os.RemoteException; import android.os.SystemClock; import android.os.SystemProperties; +import android.provider.Settings; import android.telephony.TelephonyManager; import android.util.Config; import android.util.EventLog; @@ -908,6 +913,30 @@ public class KeyguardViewMediator implements KeyguardViewCallback, } } + private void playSounds(boolean locked) { + // User feedback for keyguard. + final ContentResolver cr = mContext.getContentResolver(); + if (Settings.System.getInt(cr, Settings.System.LOCKSCREEN_SOUNDS_ENABLED, 1) == 1) + { + final String whichSound = locked + ? Settings.System.LOCK_SOUND + : Settings.System.UNLOCK_SOUND; + final String soundPath = Settings.System.getString(cr, whichSound); + if (soundPath != null) { + final Uri soundUri = Uri.parse("file://" + soundPath); + if (soundUri != null) { + final Ringtone sfx = RingtoneManager.getRingtone(mContext, soundUri); + if (sfx != null) sfx.play(); + else Log.d(TAG, "playSounds: failed to load ringtone from uri: " + soundUri); + } else { + Log.d(TAG, "playSounds: could not parse Uri: " + soundPath); + } + } else { + Log.d(TAG, "playSounds: whichSound = " + whichSound + "; soundPath was null"); + } + } + } + /** * Handle message sent by {@link #showLocked}. * @see #SHOW @@ -917,6 +946,8 @@ public class KeyguardViewMediator implements KeyguardViewCallback, if (DEBUG) Log.d(TAG, "handleShow"); if (!mSystemReady) return; + playSounds(true); + mKeyguardViewManager.show(); mShowing = true; adjustUserActivityLocked(); @@ -941,6 +972,8 @@ public class KeyguardViewMediator implements KeyguardViewCallback, return; } + playSounds(false); + mKeyguardViewManager.hide(); mShowing = false; adjustUserActivityLocked(); -- cgit v1.1