Tuesday, June 19, 2012

Gallery Live Wallpaper v1.0

(Google Play full version link)
(Google Play free version link)


Gallery Live Wallpaper allows you to display your favorite images on your home screen!  You can select from any image on your device, and can customize which transitions and camera behavior you get, how fast the images cycle, and plenty more!

If you don't want to take your own pictures, then you can point it at Reddit or Flickr and it'll download images in the background periodically, so you'll always have something new.  You can provide your own subreddit selections or Flickr search terms to customize what kind of results you get, and can set how frequently checks happen and how much storage will be used.

Additionally, unlike the similar products I've seen on the market,  Gallery is fully OpenGL accelerated, so slow pans and zooms don't have any single-pixel jumps going on that mess up the smooth motion.  It also performs very well, like a slideshow should.

I'm really happy with how this project turned out.  The initial idea was to make something that could emulate the Ken Burns Effect, and it went way further than that over time.  :)

Making this one was something of an educational experience, simply because while most of our projects are using pre-made art, this one doesn't.  It's completely reliant on whatever it is the user provides, so we ran into a few different hurdles making sure there were no visible limitations:
  • Modern camera phones take images much bigger than is necessary for the screen, so you have to get their size and reduce it appropriately before you try to do any loading.  Otherwise you'll end up allocating 30 meg to read in a 8 megapixel image, to display on a 1 megapixel screen.
  • Reducing at load time generally means reducing by an integer divisor - half size, quarter size, etc.  You don't get a lot of fine control there.
  • Despite that, careful not to reduce it too far, otherwise the quality on-screen will suffer.
  • Non-power-of-two textures work, but using odd numbers crashes some devices' OpenGL drivers.  Make sure you resize to a even number in both dimensions.  This means you may end up resizing it twice, given the integer resizing issue.
  • Some images have EXIF tags to rotate/mirror them.  This is really annoying to deal with, but otherwise you'll end up with a lot of sideways images.

No comments:

Post a Comment