OSDN Git Service

New live wallpaper API to expose author and description strings.
authorDaniel Sandler <dsandler@google.com>
Thu, 5 Nov 2009 20:05:27 +0000 (15:05 -0500)
committerDaniel Sandler <dsandler@google.com>
Thu, 5 Nov 2009 20:05:27 +0000 (15:05 -0500)
First in a sequence of CLs to address
http://b/issue?id=2235307 .

Change-Id: Id1458b01c8a7918f345823b45e5726e02285d8b5

api/current.xml
core/java/android/app/WallpaperInfo.java
core/res/res/values/attrs.xml
core/res/res/values/public.xml

index e72a88c..a29a1a9 100644 (file)
  visibility="public"
 >
 </field>
+<field name="wallpaperAuthor"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843444"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="wallpaperCloseEnterAnimation"
  type="int"
  transient="false"
  visibility="public"
 >
 </field>
+<field name="wallpaperDescription"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843445"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
 <field name="wallpaperIntraCloseEnterAnimation"
  type="int"
  transient="false"
index 587e8f9..59d58aa 100644 (file)
@@ -9,6 +9,7 @@ import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
+import android.content.res.Resources.NotFoundException;
 import android.content.res.TypedArray;
 import android.content.res.XmlResourceParser;
 import android.graphics.drawable.Drawable;
@@ -45,6 +46,16 @@ public final class WallpaperInfo implements Parcelable {
     final int mThumbnailResource;
 
     /**
+     * Resource identifier for a string indicating the author of the wallpaper.
+     */
+    final int mAuthorResource;
+
+    /**
+     * Resource identifier for a string containing a short description of the wallpaper.
+     */
+    final int mDescriptionResource;
+
+    /**
      * Constructor.
      * 
      * @param context The Context in which we are parsing the wallpaper.
@@ -59,6 +70,8 @@ public final class WallpaperInfo implements Parcelable {
         PackageManager pm = context.getPackageManager();
         String settingsActivityComponent = null;
         int thumbnailRes = -1;
+        int authorRes = -1;
+        int descriptionRes = -1;
         
         XmlResourceParser parser = null;
         try {
@@ -89,6 +102,12 @@ public final class WallpaperInfo implements Parcelable {
             thumbnailRes = sa.getResourceId(
                     com.android.internal.R.styleable.Wallpaper_thumbnail,
                     -1);
+            authorRes = sa.getResourceId(
+                    com.android.internal.R.styleable.Wallpaper_wallpaperAuthor,
+                    -1);
+            descriptionRes = sa.getResourceId(
+                    com.android.internal.R.styleable.Wallpaper_wallpaperDescription,
+                    -1);
 
             sa.recycle();
         } finally {
@@ -97,11 +116,15 @@ public final class WallpaperInfo implements Parcelable {
         
         mSettingsActivityName = settingsActivityComponent;
         mThumbnailResource = thumbnailRes;
+        mAuthorResource = authorRes;
+        mDescriptionResource = descriptionRes;
     }
 
     WallpaperInfo(Parcel source) {
         mSettingsActivityName = source.readString();
         mThumbnailResource = source.readInt();
+        mAuthorResource = source.readInt();
+        mDescriptionResource = source.readInt();
         mService = ResolveInfo.CREATOR.createFromParcel(source);
     }
     
@@ -169,6 +192,32 @@ public final class WallpaperInfo implements Parcelable {
                               mThumbnailResource,
                               null);
     }
+
+    /**
+     * Return a string indicating the author(s) of this wallpaper.
+     */
+    public CharSequence loadAuthor(PackageManager pm) throws NotFoundException {
+        if (mAuthorResource <= 0) throw new NotFoundException();
+        return pm.getText(
+            (mService.resolvePackageName != null)
+                ? mService.resolvePackageName
+                : getPackageName(),
+            mAuthorResource,
+            null);
+    }
+
+    /**
+     * Return a brief summary of this wallpaper's behavior.
+     */
+    public CharSequence loadDescription(PackageManager pm) throws NotFoundException {
+        if (mDescriptionResource <= 0) throw new NotFoundException();
+        return pm.getText(
+            (mService.resolvePackageName != null)
+                ? mService.resolvePackageName
+                : getPackageName(),
+            mDescriptionResource,
+            null);
+    }
     
     /**
      * Return the class name of an activity that provides a settings UI for
@@ -206,6 +255,8 @@ public final class WallpaperInfo implements Parcelable {
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeString(mSettingsActivityName);
         dest.writeInt(mThumbnailResource);
+        dest.writeInt(mAuthorResource);
+        dest.writeInt(mDescriptionResource);
         mService.writeToParcel(dest, flags);
     }
 
index 8aab595..7e6258e 100644 (file)
 
         <!-- Reference to a the wallpaper's thumbnail bitmap. -->
         <attr name="thumbnail" format="reference" />
+
+        <!-- Name of the author of a wallpaper, e.g. Google. -->
+        <attr name="wallpaperAuthor" format="reference" />
+
+        <!-- Short description of the wallpaper's purpose or behavior. -->
+        <attr name="wallpaperDescription" format="reference" />
     </declare-styleable>
 
     <!-- =============================== -->
index a0b5610..5eb1c8e 100644 (file)
   <public type="attr" name="quickContactBadgeStyleSmallWindowSmall" />
   <public type="attr" name="quickContactBadgeStyleSmallWindowMedium" />
   <public type="attr" name="quickContactBadgeStyleSmallWindowLarge" />
+
+  <public type="attr" name="wallpaperAuthor" />
+  <public type="attr" name="wallpaperDescription" />
   
 </resources>