summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/AndroidManifest.xml5
-rw-r--r--packages/SystemUI/src/com/android/systemui/Somnambulator.java42
2 files changed, 38 insertions, 9 deletions
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index a7294ec..3ef44d9 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -214,6 +214,11 @@
<action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
+ <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>
</application>
</manifest>
diff --git a/packages/SystemUI/src/com/android/systemui/Somnambulator.java b/packages/SystemUI/src/com/android/systemui/Somnambulator.java
index bd87238..8e3ce3b 100644
--- a/packages/SystemUI/src/com/android/systemui/Somnambulator.java
+++ b/packages/SystemUI/src/com/android/systemui/Somnambulator.java
@@ -20,15 +20,33 @@ import android.app.Activity;
import android.content.Intent;
import android.os.RemoteException;
import android.os.ServiceManager;
+import android.os.UserHandle;
+import android.provider.Settings;
import android.service.dreams.Dream;
import android.service.dreams.IDreamManager;
import android.util.Slog;
public class Somnambulator extends Activity {
+ public static final String TAG = "Somnambulator";
+
+ public static final int DEFAULT_SCREENSAVER_ENABLED = 1;
+ public static final int DEFAULT_SCREENSAVER_ACTIVATED_ON_DOCK = 1;
public Somnambulator() {
}
-
+
+ private boolean isScreenSaverEnabled() {
+ return Settings.Secure.getIntForUser(getContentResolver(),
+ Settings.Secure.SCREENSAVER_ENABLED, DEFAULT_SCREENSAVER_ENABLED,
+ UserHandle.USER_CURRENT) != 0;
+ }
+
+ private boolean isScreenSaverActivatedOnDock() {
+ return Settings.Secure.getIntForUser(getContentResolver(),
+ Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK,
+ DEFAULT_SCREENSAVER_ACTIVATED_ON_DOCK, UserHandle.USER_CURRENT) != 0;
+ }
+
@Override
public void onStart() {
super.onStart();
@@ -45,14 +63,20 @@ public class Somnambulator extends Activity {
resultIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.start_dreams));
setResult(RESULT_OK, resultIntent);
} else {
- IDreamManager somnambulist = IDreamManager.Stub.asInterface(
- ServiceManager.checkService(Dream.DREAM_SERVICE));
- if (somnambulist != null) {
- try {
- Slog.v("Somnambulator", "Dreaming by user request.");
- somnambulist.dream();
- } catch (RemoteException e) {
- // fine, stay asleep then
+ boolean docked = launchIntent.hasCategory(Intent.CATEGORY_DESK_DOCK);
+
+ if (docked && !(isScreenSaverEnabled() && isScreenSaverActivatedOnDock())) {
+ Slog.i(TAG, "Dreams currently disabled for docks.");
+ } else {
+ IDreamManager somnambulist = IDreamManager.Stub.asInterface(
+ ServiceManager.checkService(Dream.DREAM_SERVICE));
+ if (somnambulist != null) {
+ try {
+ Slog.v(TAG, "Dreaming on " + (docked ? "dock insertion" : "user request"));
+ somnambulist.dream();
+ } catch (RemoteException e) {
+ // fine, stay asleep then
+ }
}
}
}