public final class DreamManager {
public static final int WHILE_CHARGING = 0;
public static final int WHILE_DOCKED = 1;
public static final int EITHER = 2;
public static final int NEVER = 3;
public static final String SCREENSAVER_COMPONENT = "screensaver_component";
public static final String SCREENSAVER_ENABLED = "screensaver_enabled";
public static final String SCREENSAVER_ACTIVATE_ON_DOCK = "screensaver_activate_on_dock";
public static final String SCREENSAVER_ACTIVATE_ON_SLEEP = "screensaver_activate_on_sleep";
private static final DreamManager sInstance = new DreamManager();
public static DreamManager getInstance() {
return sInstance;
}
private DreamManager() {
mContext = getApplicationContext();
}
private Context getApplicationContext() {
// No implement
return null;
}
private final Context mContext;
public void setDreamComponent(ComponentName name) {
Settings.Secure.putString(mContext.getContentResolver(), SCREENSAVER_COMPONENT, name.flattenToString());
}
public ComponentName getDreamComponent() {
String component = Settings.Secure.getString(mContext.getContentResolver(), SCREENSAVER_COMPONENT);
if (component != null) {
return ComponentName.unflattenFromString(component);
} else {
return null;
}
}
public void setWhenToDream(int whenToDream) {
setEnabled(whenToDream != NEVER);
switch (whenToDream) {
case WHILE_CHARGING:
setActivatedOnDock(false);
setActivatedOnSleep(true);
break;
case WHILE_DOCKED:
setActivatedOnDock(true);
setActivatedOnSleep(false);
break;
case EITHER:
setActivatedOnDock(true);
setActivatedOnSleep(true);
break;
case NEVER:
default:
break;
}
}
public int getWhenToDreamSetting() {
if (!isEnabled()) {
return NEVER;
}
return isActivatedOnDock() && isActivatedOnSleep() ? EITHER
: isActivatedOnDock() ? WHILE_DOCKED
: isActivatedOnSleep() ? WHILE_CHARGING
: NEVER;
}
public boolean isEnabled() {
return getBoolean(SCREENSAVER_ENABLED, false);
}
public void setEnabled(boolean value) {
setBoolean(SCREENSAVER_ENABLED, value);
}
public boolean isActivatedOnDock() {
return getBoolean(SCREENSAVER_ACTIVATE_ON_DOCK,
false);
}
public void setActivatedOnDock(boolean value) {
setBoolean(SCREENSAVER_ACTIVATE_ON_DOCK, value);
}
public boolean isActivatedOnSleep() {
return getBoolean(SCREENSAVER_ACTIVATE_ON_SLEEP,
false);
}
public void setActivatedOnSleep(boolean value) {
setBoolean(SCREENSAVER_ACTIVATE_ON_SLEEP, value);
}
private boolean getBoolean(String key, boolean def) {
return Settings.Secure.getInt(mContext.getContentResolver(), key, def ? 1 : 0) == 1;
}
private void setBoolean(String key, boolean value) {
Settings.Secure.putInt(mContext.getContentResolver(), key, value ? 1 : 0);
}
}