diff options
| author | John Spurlock <jspurlock@google.com> | 2012-08-22 09:56:51 -0400 |
|---|---|---|
| committer | John Spurlock <jspurlock@google.com> | 2012-08-22 16:49:20 -0400 |
| commit | 1a868b7981ca5f52e893fdf9f8f538c9d5ce241d (patch) | |
| tree | 7e47e8cdd2c7330d7f56d7a9c4fed851e53e94c9 /core/java/android/service | |
| parent | 00a8f4ff627584f4d9a8ae0cd83f87786005e16d (diff) | |
| download | frameworks_base-1a868b7981ca5f52e893fdf9f8f538c9d5ce241d.zip frameworks_base-1a868b7981ca5f52e893fdf9f8f538c9d5ce241d.tar.gz frameworks_base-1a868b7981ca5f52e893fdf9f8f538c9d5ce241d.tar.bz2 | |
Add framework support for multiple dreams.
Bug:7028665
Change-Id: I4fba6b8e39dc07af4490c621ac3bc7b3867371b2
Diffstat (limited to 'core/java/android/service')
| -rw-r--r-- | core/java/android/service/dreams/Dream.java | 4 | ||||
| -rw-r--r-- | core/java/android/service/dreams/DreamManagerService.java | 51 | ||||
| -rw-r--r-- | core/java/android/service/dreams/IDreamManager.aidl | 5 |
3 files changed, 45 insertions, 15 deletions
diff --git a/core/java/android/service/dreams/Dream.java b/core/java/android/service/dreams/Dream.java index 69db97c..ba2ac67 100644 --- a/core/java/android/service/dreams/Dream.java +++ b/core/java/android/service/dreams/Dream.java @@ -56,6 +56,10 @@ public class Dream extends Service implements Window.Callback { public static final String SERVICE_INTERFACE = "android.service.dreams.Dream"; + /** Service meta-data key for declaring an optional configuration activity. */ + public static final String METADATA_NAME_CONFIG_ACTIVITY = + "android.service.dreams.config_activity"; + private Window mWindow; private WindowManager mWindowManager; diff --git a/core/java/android/service/dreams/DreamManagerService.java b/core/java/android/service/dreams/DreamManagerService.java index 5d6b17e..4b0f7c5 100644 --- a/core/java/android/service/dreams/DreamManagerService.java +++ b/core/java/android/service/dreams/DreamManagerService.java @@ -1,7 +1,7 @@ package android.service.dreams; -import static android.provider.Settings.Secure.SCREENSAVER_COMPONENT; - +import static android.provider.Settings.Secure.SCREENSAVER_COMPONENTS; +import static android.provider.Settings.Secure.SCREENSAVER_DEFAULT_COMPONENT; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -58,7 +58,8 @@ public class DreamManagerService // IDreamManager method @Override public void dream() { - ComponentName name = getDreamComponent(); + ComponentName[] dreams = getDreamComponents(); + ComponentName name = dreams != null && dreams.length > 0 ? dreams[0] : null; if (name != null) { synchronized (mLock) { final long ident = Binder.clearCallingIdentity(); @@ -73,21 +74,45 @@ public class DreamManagerService // IDreamManager method @Override - public void setDreamComponent(ComponentName name) { - Settings.Secure.putString(mContext.getContentResolver(), SCREENSAVER_COMPONENT, name.flattenToString()); + public void setDreamComponents(ComponentName[] componentNames) { + Settings.Secure.putString(mContext.getContentResolver(), + SCREENSAVER_COMPONENTS, + componentsToString(componentNames)); + } + + private static String componentsToString(ComponentName[] componentNames) { + StringBuilder names = new StringBuilder(); + if (componentNames != null) { + for (ComponentName componentName : componentNames) { + if (names.length() > 0) + names.append(','); + names.append(componentName.flattenToString()); + } + } + return names.toString(); + } + + private static ComponentName[] componentsFromString(String names) { + String[] namesArray = names.split(","); + ComponentName[] componentNames = new ComponentName[namesArray.length]; + for (int i = 0; i < namesArray.length; i++) + componentNames[i] = ComponentName.unflattenFromString(namesArray[i]); + return componentNames; } // IDreamManager method @Override - public ComponentName getDreamComponent() { + public ComponentName[] getDreamComponents() { // TODO(dsandler) don't load this every time, watch the value - String component = Settings.Secure.getString(mContext.getContentResolver(), SCREENSAVER_COMPONENT); - if (component != null) { - return ComponentName.unflattenFromString(component); - } else { - // We rely on DatabaseHelper to set a sane default for us when the settings DB is upgraded - return null; - } + String names = Settings.Secure.getString(mContext.getContentResolver(), SCREENSAVER_COMPONENTS); + return componentsFromString(names); + } + + // IDreamManager method + @Override + public ComponentName getDefaultDreamComponent() { + String name = Settings.Secure.getString(mContext.getContentResolver(), SCREENSAVER_DEFAULT_COMPONENT); + return name == null ? null : ComponentName.unflattenFromString(name); } // IDreamManager method diff --git a/core/java/android/service/dreams/IDreamManager.aidl b/core/java/android/service/dreams/IDreamManager.aidl index b64dd8f..b6fcdf0 100644 --- a/core/java/android/service/dreams/IDreamManager.aidl +++ b/core/java/android/service/dreams/IDreamManager.aidl @@ -24,8 +24,9 @@ import android.content.ComponentName; interface IDreamManager { void dream(); void awaken(); - void setDreamComponent(in ComponentName componentName); - ComponentName getDreamComponent(); + void setDreamComponents(in ComponentName[] componentNames); + ComponentName[] getDreamComponents(); + ComponentName getDefaultDreamComponent(); void testDream(in ComponentName componentName); boolean isDreaming(); }
\ No newline at end of file |
