summaryrefslogtreecommitdiffstats
path: root/core/java/android/service
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2012-08-22 09:56:51 -0400
committerJohn Spurlock <jspurlock@google.com>2012-08-22 16:49:20 -0400
commit1a868b7981ca5f52e893fdf9f8f538c9d5ce241d (patch)
tree7e47e8cdd2c7330d7f56d7a9c4fed851e53e94c9 /core/java/android/service
parent00a8f4ff627584f4d9a8ae0cd83f87786005e16d (diff)
downloadframeworks_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.java4
-rw-r--r--core/java/android/service/dreams/DreamManagerService.java51
-rw-r--r--core/java/android/service/dreams/IDreamManager.aidl5
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