Tuesday, June 19, 2012

Gallery Live Wallpaper v1.0

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

(YouTube)

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.

Saturday, June 9, 2012

Canabalt HD for Playbook

It took a while to get through the process, but Canabalt HD is now available for purchase on Blackberry App World!  This is taking advantage of RIM's Dalvik compatibility, and runs extremely well on the Playbook.  I'm thrilled to finally have this out there.  :)

Friday, June 8, 2012

Obscure Market Errors

We spent most of an afternoon trying to figure out a problem we were having with Android in-app purchases.  We'd try to buy something, it would fail, and in the log output we'd get IAB_PERMISSION_ERROR, something that you'll find almost no hits on if you do a Google search.

After a lot of pounding our heads on the wall, we figured out the source of the problem, at least in our case -- the item we were trying to buy existed but hadn't yet been published.  Sounds obvious I know, but it wasn't our Market account we were testing against so we didn't have any way to double-check it ourselves, and were told everything was good to go.

If you got here because you had this error happen and this is the only link in English, I suggest that you confirm the in-app product has actually been published, not just saved.  We also did some tests trying to access an in-app product from an account that wasn't in the test list, you'll see the same error in that case.

Flags of Europe Live Wallpaper v1.7

  - New Feature: Andorra, Kosovo flags

This isn't a big update, just a content addition of a couple countries that have been requested over time.  Hope folks enjoy!

Sunday, June 3, 2012

Compatibility Testing on Android

I was just reading this TechCrunch article and thought I'd write a quick explanation of the philosophy we've generally tried to take here, which is somewhat different than any of the ones listed.  Our work is almost exclusively in 3D rendering (with minimal UI, even) and has informed the way we've handled things as a result.

Basically, we've taken the tack that there are two directions to check: Hardware and Drivers.  This means we want representatives of all the OS versions, and representatives of all the hardware chipsets.  On the OS side that's 2.1, 2.2, 2.3.3, 3.2, and 4.0.  On the hardware side that's Qualcomm Adreno, nVidia Tegra, PowerVR, and Samsung Mali.

This means minimum we end up with around 20 devices, in order to get each OS version represented with each chipset.  In practice it's not quite so neat and tidy -- there aren't any 2.1 or 2.2 Tegra devices, for example.  When in doubt, we get variations of hardware before variations of OS, as experience thus far is that while the OS may change the drivers appear to stay the same.

Generally, if we're doing a major update of some kind we'll make a point of running it on a variety of these devices and make sure everything behaves correctly.  For minor updates where nothing risky has changed, we'll generally run through it on the devices on the desk of the individual developer.  Generally these represent the hardware axis of the grid, given the aforementioned driver point.

Sunday, May 27, 2012

Friendly Bugs Live Wallpaper v2.05

  - Bug Fix: Problem with "Frosted Glass" on some devices
  - Update: Ladybugs dance when touched!
  - Update: Resting butterflies fly away when touched!

This update fixes an issue with the "Frosted Glass" background -- it wasn't a power of two, and non-power-of-two ETC1 textures don't work on all devices.  Sorry, that slipped through the cracks.  :/

In addition to this fix, we've added in a couple quick features.  Laldybugs and butterflies now both react to touch!  Butterflies at rest will fly away when touched, and ladybugs will do a little dance!  Enjoy!