summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorDaniel Sandler <dsandler@android.com>2011-11-16 11:10:22 -0800
committerDaniel Sandler <dsandler@android.com>2011-11-16 11:34:09 -0800
commit532a0bbfa49929cc3b7a173aaf25e119765d0bd0 (patch)
treed9b7032e2fcc197906583c2758c838ddd60b2f57 /packages
parent11ddf533a2165ca68002d3b48e312271b3d0dedb (diff)
downloadframeworks_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.xml13
-rw-r--r--packages/SystemUI/src/com/android/systemui/DreamsDockLauncher.java33
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);
+ }
+ }
+ }
}
}