Skip to content

Commit f80ad90

Browse files
dsandlerAndroid (Google) Code Review
authored andcommitted
Merge "Add the SystemUI's dream-starter as a DESK_DOCK app." into jb-mr1-dev
2 parents 6e06191 + 3a12029 commit f80ad90

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

packages/SystemUI/AndroidManifest.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,11 @@
214214
<action android:name="android.intent.action.CREATE_SHORTCUT" />
215215
<category android:name="android.intent.category.DEFAULT" />
216216
</intent-filter>
217+
<intent-filter>
218+
<action android:name="android.intent.action.MAIN" />
219+
<category android:name="android.intent.category.DEFAULT" />
220+
<category android:name="android.intent.category.DESK_DOCK" />
221+
</intent-filter>
217222
</activity>
218223
</application>
219224
</manifest>

packages/SystemUI/src/com/android/systemui/Somnambulator.java

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,33 @@
2020
import android.content.Intent;
2121
import android.os.RemoteException;
2222
import android.os.ServiceManager;
23+
import android.os.UserHandle;
24+
import android.provider.Settings;
2325
import android.service.dreams.Dream;
2426
import android.service.dreams.IDreamManager;
2527
import android.util.Slog;
2628

2729
public class Somnambulator extends Activity {
30+
public static final String TAG = "Somnambulator";
31+
32+
public static final int DEFAULT_SCREENSAVER_ENABLED = 1;
33+
public static final int DEFAULT_SCREENSAVER_ACTIVATED_ON_DOCK = 1;
2834

2935
public Somnambulator() {
3036
}
31-
37+
38+
private boolean isScreenSaverEnabled() {
39+
return Settings.Secure.getIntForUser(getContentResolver(),
40+
Settings.Secure.SCREENSAVER_ENABLED, DEFAULT_SCREENSAVER_ENABLED,
41+
UserHandle.USER_CURRENT) != 0;
42+
}
43+
44+
private boolean isScreenSaverActivatedOnDock() {
45+
return Settings.Secure.getIntForUser(getContentResolver(),
46+
Settings.Secure.SCREENSAVER_ACTIVATE_ON_DOCK,
47+
DEFAULT_SCREENSAVER_ACTIVATED_ON_DOCK, UserHandle.USER_CURRENT) != 0;
48+
}
49+
3250
@Override
3351
public void onStart() {
3452
super.onStart();
@@ -45,14 +63,20 @@ public void onStart() {
4563
resultIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.start_dreams));
4664
setResult(RESULT_OK, resultIntent);
4765
} else {
48-
IDreamManager somnambulist = IDreamManager.Stub.asInterface(
49-
ServiceManager.checkService(Dream.DREAM_SERVICE));
50-
if (somnambulist != null) {
51-
try {
52-
Slog.v("Somnambulator", "Dreaming by user request.");
53-
somnambulist.dream();
54-
} catch (RemoteException e) {
55-
// fine, stay asleep then
66+
boolean docked = launchIntent.hasCategory(Intent.CATEGORY_DESK_DOCK);
67+
68+
if (docked && !(isScreenSaverEnabled() && isScreenSaverActivatedOnDock())) {
69+
Slog.i(TAG, "Dreams currently disabled for docks.");
70+
} else {
71+
IDreamManager somnambulist = IDreamManager.Stub.asInterface(
72+
ServiceManager.checkService(Dream.DREAM_SERVICE));
73+
if (somnambulist != null) {
74+
try {
75+
Slog.v(TAG, "Dreaming on " + (docked ? "dock insertion" : "user request"));
76+
somnambulist.dream();
77+
} catch (RemoteException e) {
78+
// fine, stay asleep then
79+
}
5680
}
5781
}
5882
}

0 commit comments

Comments
 (0)