diff options
author | Daniel Sandler <dsandler@android.com> | 2011-11-16 11:10:22 -0800 |
---|---|---|
committer | Daniel Sandler <dsandler@android.com> | 2011-11-16 11:34:09 -0800 |
commit | 532a0bbfa49929cc3b7a173aaf25e119765d0bd0 (patch) | |
tree | d9b7032e2fcc197906583c2758c838ddd60b2f57 /packages | |
parent | 11ddf533a2165ca68002d3b48e312271b3d0dedb (diff) | |
download | frameworks_base-532a0bbfa49929cc3b7a173aaf25e119765d0bd0.zip frameworks_base-532a0bbfa49929cc3b7a173aaf25e119765d0bd0.tar.gz frameworks_base-532a0bbfa49929cc3b7a173aaf25e119765d0bd0.tar.bz2 |
Activate Dreams (screen saver) when desk-docked.
SystemUI's DreamsDockLauncher now responds to low-level dock
events (Intent.ACTION_DOCK_EVENT) by immediately invoking
the user's selected screen saver.
(The high-level DESK_DOCK behavior is no longer enabled; see
change I7884f65.)
Bug: 5591015
Change-Id: I01a9bc6b181d55493f891ccc220631ddc461808a
Diffstat (limited to 'packages')
-rw-r--r-- | packages/SystemUI/AndroidManifest.xml | 13 | ||||
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java | 33 |
2 files changed, 40 insertions, 6 deletions
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml index aa36b07..dff41c9 100644 --- a/packages/SystemUI/AndroidManifest.xml +++ b/packages/SystemUI/AndroidManifest.xml @@ -46,17 +46,26 @@ </intent-filter> </receiver> - <!-- handle dock insertion, launch screensaver instead --> + <!-- should you need to launch the screensaver, this is a good way to do it --> <activity android:name=".DreamsDockLauncher" android:theme="@android:style/Theme.Dialog" android:label="@string/dreams_dock_launcher"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> - <category android:name="android.intent.category.DESK_DOCK" /> </intent-filter> </activity> + <!-- launch screensaver on (desk) dock event --> + <receiver android:name=".DreamsDockLauncher$DockEventReceiver" + android:exported="true" + > + <intent-filter> + <action android:name="android.intent.action.DOCK_EVENT" /> + </intent-filter> + </receiver> + + <activity android:name=".usb.UsbStorageActivity" android:excludeFromRecents="true"> </activity> diff --git a/packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java b/packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java index def785b..0035296 100644 --- a/packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java +++ b/packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java @@ -12,14 +12,22 @@ import android.util.Slog; public class DreamsDockLauncher extends Activity { private static final String TAG = "DreamsDockLauncher"; + + // Launch the screen saver if started as an activity. @Override protected void onCreate (Bundle icicle) { super.onCreate(icicle); + launchDream(this); + finish(); + } + + private static void launchDream(Context context) { try { String component = Settings.Secure.getString( - getContentResolver(), Settings.Secure.DREAM_COMPONENT); + context.getContentResolver(), Settings.Secure.DREAM_COMPONENT); if (component == null) { - component = getResources().getString(com.android.internal.R.string.config_defaultDreamComponent); + component = context.getResources().getString( + com.android.internal.R.string.config_defaultDreamComponent); } if (component != null) { ComponentName cn = ComponentName.unflattenFromString(component); @@ -29,7 +37,8 @@ public class DreamsDockLauncher extends Activity { | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS | Intent.FLAG_ACTIVITY_NO_USER_ACTION ); - startActivity(zzz); + Slog.v(TAG, "Starting screen saver on dock event: " + component); + context.startActivity(zzz); } else { Slog.e(TAG, "Couldn't start screen saver: none selected"); } @@ -37,6 +46,22 @@ public class DreamsDockLauncher extends Activity { // no screensaver? give up Slog.e(TAG, "Couldn't start screen saver: none installed"); } - finish(); + } + + // Trap low-level dock events and launch the screensaver. + public static class DockEventReceiver extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + if (Intent.ACTION_DOCK_EVENT.equals(intent.getAction())) { + Bundle extras = intent.getExtras(); + int state = extras + .getInt(Intent.EXTRA_DOCK_STATE, Intent.EXTRA_DOCK_STATE_UNDOCKED); + if (state == Intent.EXTRA_DOCK_STATE_DESK + || state == Intent.EXTRA_DOCK_STATE_LE_DESK + || state == Intent.EXTRA_DOCK_STATE_HE_DESK) { + launchDream(context); + } + } + } } } |