How to set the Android Live Wallpaper icon (aka "thumbnail")

philcolbourn picture philcolbourn · Aug 18, 2010 · Viewed 12.1k times · Source

I built my first Android app.

It is a Live Wallpaper designed for 2.2.

When I press and hold the screen, select Wallpapers and then select Live Wallpapers, my live wallpaper has what looks like a default icon with the name of my live wallpaper overlaid.

How do I set this icon?

My manifest file has an application icon specified as @drawable/icon

Update

I think I need to add some info to this question as it poorly describes my problem (sorry).

  1. I have all the res/drawable-[hml]dpi/ icons. I named them all icon.png.
  2. My manifest file contains <application android:label="@string/app_name" android:icon="@drawable/icon">
  3. I have also tried creating a 48x48 icon in res/drawable/ called icon.png.
  4. I have also tried explicitly adding icons in other manifest tags if they are allowed. eg. service, activity, intent-filter (It should be obvious that I don't know how this manifest file really works, so I was trying anything)
  5. In Manage Applications, the icon is displayed correctly.
  6. When selecting the Live Wallpaper, the icon is not displayed correctly.
  7. mdpi icon is 48x48, ldpi icon is 36x36 and hdpi icon is 72x72

Answer

Navierstokes picture Navierstokes · Aug 23, 2010

In order to see an icon in the live wallpaper menu, you need to set the android:thumbnail attribute for the applications <Wallpaper> tag. This will normally be found in the XML file corresponding to the class that extends WallpaperService.

Looking at the CubeLiveWallpaper sample application provided with the SDK, we see this tag to be located in cube1.xml and cube2.xml. A modified version below displays the icon thumb.png located in res/drawable and provides a description defined in strings.xml

<wallpaper 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:thumbnail="@drawable/thumb"
    android:description="@string/description"
    android:settingsActivity="com.example.android.livecubes.cube2.CubeWallpaper2Settings"
/>

NOTE: this works regardless of file extension, assuming that the format is a supported type - jpg. png etc