Merge "Add the SystemUI's dream-starter as a DESK_DOCK app." into jb-mr1-dev

This commit is contained in:
Daniel Sandler
2012-09-28 10:49:05 -07:00
committed by Android (Google) Code Review
2 changed files with 38 additions and 9 deletions

View File

@@ -214,6 +214,11 @@
<action android:name="android.intent.action.CREATE_SHORTCUT" /> <action android:name="android.intent.action.CREATE_SHORTCUT" />
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT" />
</intent-filter> </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> </activity>
</application> </application>
</manifest> </manifest>

View File

@@ -20,15 +20,33 @@ import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.service.dreams.Dream; import android.service.dreams.Dream;
import android.service.dreams.IDreamManager; import android.service.dreams.IDreamManager;
import android.util.Slog; import android.util.Slog;
public class Somnambulator extends Activity { 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() { 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 @Override
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
@@ -45,14 +63,20 @@ public class Somnambulator extends Activity {
resultIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.start_dreams)); resultIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.start_dreams));
setResult(RESULT_OK, resultIntent); setResult(RESULT_OK, resultIntent);
} else { } else {
IDreamManager somnambulist = IDreamManager.Stub.asInterface( boolean docked = launchIntent.hasCategory(Intent.CATEGORY_DESK_DOCK);
ServiceManager.checkService(Dream.DREAM_SERVICE));
if (somnambulist != null) { if (docked && !(isScreenSaverEnabled() && isScreenSaverActivatedOnDock())) {
try { Slog.i(TAG, "Dreams currently disabled for docks.");
Slog.v("Somnambulator", "Dreaming by user request."); } else {
somnambulist.dream(); IDreamManager somnambulist = IDreamManager.Stub.asInterface(
} catch (RemoteException e) { ServiceManager.checkService(Dream.DREAM_SERVICE));
// fine, stay asleep then if (somnambulist != null) {
try {
Slog.v(TAG, "Dreaming on " + (docked ? "dock insertion" : "user request"));
somnambulist.dream();
} catch (RemoteException e) {
// fine, stay asleep then
}
} }
} }
} }