diff options
| author | 2011-11-17 11:46:23 -0800 | |
|---|---|---|
| committer | 2011-11-17 11:46:23 -0800 | |
| commit | 470dfcd03028aa1cb63448314f0e96d86a46f997 (patch) | |
| tree | 5de8ad4fc2d9df6db89c448d3afdff9d7ff24d23 | |
| parent | f27e94ce9db83f01a98eefd0add04e7a19dde60d (diff) | |
| parent | a092482c17830b985798d5da9c1d1951735bacf3 (diff) | |
am a092482c: am 293f861a: Merge "Activate Dreams (screen saver) when desk-docked." into ics-mr1
* commit 'a092482c17830b985798d5da9c1d1951735bacf3':
Activate Dreams (screen saver) when desk-docked.
| -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 aa36b07242c9..dff41c977b5a 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 def785b48f4d..00352969d743 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); + } + } + } } } |