Sunday, December 29, 2013

Galactic Core Live Wallpaper v2.35

  - Bug Fix: Resizing issue on 4.4+ handsets
  - Update: Links in settings
  - Google Play Link

Nothing big, just another maintenance update.  We also cleaned up the store listing and bit and put in screenshots for tablets specifically and so on.  The main thing is that this way folks on a Nexus 5 won't get a black bar at the top of the screen!

Wednesday, December 18, 2013

Gallery Live Wallpaper v2.11

  - Bug Fix: Crash reading local images on 4.4 devices
  - Google Play Link

As far as we can tell, 4.4 changed some of the logic behind the READ_EXTERNAL_STORAGE permission, as it now closes the door on some items that were fine before.  As a result we've had to add this to Gallery.  We try to keep our permission usage minimal, but as showing images on your device is half the point of this product, there's not a lot of getting around it...

Snowfall Live Wallpaper v2.27

  - Bug Fix: Background artifact on some devices
  - Google Play Link

This, really, only shows up on devices with a translucent title bar, and only if they're high enough resolution -- basically on something like a Nexus 5, you'd see a single-pixel strip missing along the top edge of the background.  This is fixed now, sorry about that folks.

Monday, December 9, 2013

Asteroid Belt Live Wallpaper v2.1

  - Update: Four new background images
  - Update: Rounder rings!
  - New Feature: Daydream support on 4.2+ devices!
  - Bug Fix: Resizing issue with 4.4 devices
  - Google Play Link

We always try to include something visible with our updates, even if it's mostly just code maintenance.  In this case we searched out some new spacey backgrounds, and have four more available to usage!  We also updated the orbit rings to be rounder, the previous ones were a bit faceted.

In addition this update gained Daydream support, enjoy!

Jumpgate Live Wallpaper v1.6

  - Update: Higher res asteroid textures
  - Bug Fix: Resizing issue on 4.4 devices
  - Google Play Link

Nothing big, primarily a maintenance update for Kitkat.  We did update the asteroid textures to a higher resolution than previously however!

Wednesday, December 4, 2013

Autumn Tree Live Wallpaper v1.25

  - New Feature: Daydream support on 4.2+ devices
  - Google Play Link

This really should've been in place for the previous update, I'm not sure how it got overlooked.  Sorry folks, we even had it mentioned on the Play listing but it wasn't enabled.

Prismatic Live Wallpaper v1.31

  - Bug Fix: Custom images not loading on 4.4+
  - Google Play Link

Pretty much what it says on the box.

Basically, when loading custom media we had a filter set up to confirm it's actually an image before trying to do anything.  That check was against the URI, and was looking to see if it was considered a file type for 'Gallery3D' to use.  How that precise check came about I'm not sure, but as of Android 4.4 Gallery3D no longer appears in image URIs at all... now we're checking to confirm it's a 'document' instead.

Silhouette Live Wallpaper v2.1

  - Bug Fix: Fixed resizing bug on 4.4+ devices
  - Update: New background: Flame
  - Update: Higher resolution on some backgrounds
  - Update: New icon art
  - Google Play Link 

It's been a while since silhouette was updated, so we went through and increased the resolution of some of the background artwork and added a new one to the mix.  Beyond that it's the usual maintenance update of new icon art, fixed stability issues, and so on.  :)

The new backdrop is based (though modifed) on a Creative Commons licensed image courtesy of BistroSavage on Flickr.

Monday, November 25, 2013

Dynamic Paint v1.3

  - New Feature: Daydream support on 4.2+ devices
  - Bug Fix: Resizing issue on 4.4+ devices
  - Google Play Link

Bringing Dynamic Paint up to the current codebase, and it gains a few features along the way.  This also includes some icons and other minor things to improve presentation.

Flags of Asia v1.95, Flags of Oceania v1.95, Flags of Africa v1.95

  - New Feature: Daydream support on 4.2+ devices
  - New Feature: Crop/rotate custom images
  - Bug Fix: Resizing issue on 4.4+ devices

Basically the same as the other flags updates, just bringing the remaining ones up to current code.

Sunday, November 17, 2013

Flags of Europe Live Wallpaper v1.95

  - New Feature: Daydream support on 4.2+ devices
  - New Feature: Crop/rotate custom images
  - Update: Higher res built-in backgrounds
  - Bug Fix: Resizing issue on 4.4+ devices
  Google Play Link

This one hasn't been updated in a while, so in addition to the user feature-adds it also gained Daydream support in the process.  Enjoy!

Saturday, November 16, 2013

Flags of North America Live Wallpaper v1.95

  - New Feature: Crop/rotate tools available for custom flags/backgrounds
  - Update: Higher res built-in backgrounds
  - Bug Fix: Fixed custom image picking on 4.4+ devices
  - BugFix: Fixed resizing problem on 4.4+ devices
  - Google Play Link

The backgrounds are quite a lot sharper now, which makes a pretty big difference on some devices.  Beyond that, this is a maintenance update with the usual bonuses included. :)

Friendly Bugs Live Wallpaper v2.25

  - New Feature: Crop/Rotate tools for custom backgrounds
  - Update: High res images for some backgrounds
  - Bug Fix: Resizing issue on Android 4.4
  - Google Play Link

Again this is primarily an maintenance update, but we've also up-resed some of the default backgrounds, and have included crop/rotation tools for custom backgrounds images as well.  Enjoy!

Sunday, November 10, 2013

Snowfall Live Wallpaper v2.25

  - Update: More snow!  There's a higher setting than before!
  - Update:
Additional snowflake type!
  - New Feature: Daydream support on 4.2+ devices
  - Bug Fix: Resizing issue on Android 4.4 devices
  - Bug Fix: Fixed missing top of tree
  - Google Play Link

Snowfall hasn't been updated in a while, so this maintenance release gained a number of extras as a result.  Firstly, Snowfall will now work as a Daydream if you have a supported device.  I'm surprised it went this long without that being added, sorry about that folks.

A couple minor feature updates have happened, notably the former 'blizzard' is now simply 'heavy' snow.  Head to your settings and you'll find 'blizzard' has been moved up a notch.  The top setting should be roughly 40% more snow than previously.

There's also a new snowflake type, simply called 'small'.  This is a more realistic snowflake size than the other two.

On the art front, the backgrounds are a little more dense than previously, and the tree that everybody says was missing its top now has one.  :P

Enjoy!

Prismatic Live Wallpaper v1.3

  - New Feature: Crop/rotate your custom images!
  - Update: New built-in image - Streaks!
  - Bug Fix: Resizing issue on Android 4.4 devices
  - Google Play Link

Like the below updates, this is a maintenance release that brings with it a few good extras.  Primarily, you can now crop/rotate your custom images when selecting them, a feature lots of folks have requested.  We're also including a new built-in image that gives a nice gentle background pattern.

The icon is higher res too, which is cool, I guess.

Thunderstorm Live Wallpaper v2.2

  - Bug Fix: Resizing issue on Android 4.4 devices
  - Google Play Link

This is an maintenance update that should fix a resizing problem on devices running KitKat.  Technically, you get higher res icons too.

Koi Live Wallpaper v1.7

  - New Feature: Crop/rotate custom images
  - Bug Fix: Fixed resizing issue on Android 4.4 devices
  - Google Play Link

This is primarily a maintenance update, as we have a resizing problem on KitKat devices.  Basically, when you apply the wallpaper from the preview screen, you see a gap along the top.  It's harmless and goes away if you restart, but looks bad.  This update should fix that.

In addition Koi now is using the crop/rotate window we implemented a little while back, so if you want to pick a custom background you have better control now.  :)

Friday, November 8, 2013

Gallery Live Wallpaper v2.1

  - Update: Increased delay to 5 minutes max
  - Update: Free version image limit raised from 10 to 20

This is a relatively minor update that primarily addresses a complaint I've seen several times -- that folks wanted delays longer than 30 seconds.  This update makes the top end of the bar 300 seconds, so there's a lot more room to be picky.  :)

We've also switched out the static ad in the free version for dynamic ones, and doubled the image limit to make up to the annoyance.

Tuesday, November 5, 2013

Volcano 3D Live Wallpaper v1.0

  - Google Play Link

Surprisingly, I believe this is the first 3D volcano scene in the live wallpapers category.  As a bonus, it's a good looking one.  :)

This project actually started more than a year ago, and went through several iterations of artwork before finally settling on the final product.  The terrain was sculpted as a high-poly model then rendered down into the real-time mesh you see here.  We tried to make sure there was an interesting foreground in addition to a good looking background, and think the end result here is very nice.

As always there's a number of fun features, including time of day lighting and the ability to cause an eruption by double-tapping on the background.  In the future we can hook this up to phone events, but for now the basics work.  :)

Hopefully folks enjoy!

Wurdle v1.01

  - New Feature: Sensor Portrait support
  - Google Play Link

This is a minor update that changes the icon slightly, and introduces support for Sensor Portrait mode.  This means you can flip your device in either portrait direction and the game will rotate appropriately!  Enjoy!

Tuesday, October 1, 2013

Wurdle Leaderboards fix

Due to an error on our part, there's been problems accessing the Wurdle Games Services leaderboards over the last few days.  This has been taken care of, and should be smooth sailing going forward.

This problem was largely hidden from us due to our accounts all being listed in the game's test accounts list.  Any folks working on a Games Services product, make sure you check with some non-test accounts upon release.

Wednesday, September 25, 2013

Wurdle on Kindle!

Now available here, if you have an appropriate Kindle device!

Wednesday, September 18, 2013

Wurdle v1.0

Google Play Link 

Wurdle is a fun, simple word game that we've been working on with Semi Secret for quite some time.  Lots of bright colors and clean artwork and sound go along with a fast paced game style that works really well for short game sessions.  Wurdle is an excellent pick-up-and-play title.

We've brought over all the core gameplay options -- change the grid size, color schemes, time limits, and so on.  All these are hooked into online leaderboards and achievements via Google Play games, so you can brag to your friends about the time you found alacrity in the first five seconds.

Hopefully folks dig this, as we put plenty of work into it and it's exciting to finally have it out in the light of day!  We'll be getting this one on the Kindles and Nooks of the world before long, assuming everything goes well with our initial release here.  :)



Tuesday, September 17, 2013

KF Flames Live Wallpaper v1.35

  - New Feature: crop/rotate custom images
  - Google Play Link

We'll be rolling this out to a number of objects over the next little while, but here's our first one.  Basically, upon selecting a custom background image, you'll get a window allowing you to specify what region you wish to use.  You can move this or resize it via grabbing the edges, and can rotate the overall image as well.  Once you're satisfied, hit OK and you'll be set.

This works solidly in testing so far, but please send an e-mail if there's a problem!

Wednesday, September 4, 2013

Space Battle Live Wallpaper v1.4

  - New Feature: Tilt controls!  (enable in prefs)
  - Bug Fix: Crash when editing prefs
  - Google Play Link

This is getting precariously close to being an actual game!  Head to the prefs and check the box to enable tilt controls, letting you actually guide the hero ship by tilting your device.  Now you can control that high score.  :P

This also fixes an occasional crash that could happen when editing the prefs.

Autumn Tree Live Wallpaper v1.2

  - New Feature: Ginkgo tree!
  - Update: Default color changed to 'orange'
  - Google Play Link

This update primarily adds a new tree species, the Ginkgo!  It's has funny scallop shaped leaves and adds some nice variety to the list.  In addition we've changed the default color to 'orange', mostly since I think it looks more traditional than 'random' did.  This update is also compiled using the latest SDK18,

Tuesday, August 13, 2013

Canabalt HD v2.11

All Versions:
  - Update: Support for devices with square screens
  - Bug Fix: Fixed Profile button obscuring game modes on small screens
  - Update: Current run is immediately visible on the leaderboards from the Game Over screen
  - Update: Improved performance and player input responsiveness
  - Bug Fix: Fixed potential leak issue with sound playback

Blackberry:
  - New Feature: Scoreloop support for Leaderboards and Achievements

Humble Bundle:
  - Update: No longer launches in trial mode on Ouya
  - New Feature: Humble Bundle-specific icon in the Ouya shell

This is a general bug fix update, but most specifically for the Blackberry and Humble platforms.

Thursday, July 18, 2013

Aquarium Live Wallpaper v3.1

  - Update: Three new fish!
  - New Feature: Multi-layer backgrounds
  - Google Play Link

A few of the backgrounds are now separated into layers, so you get more parallax when scrolling.  Unfortunately only a few lend themselves, but it's a nice improvement where it works.  :)

In addition, this adds three new fish types to the selection, and enables Daydream support on the free version as well.  Enjoy!

Monday, July 15, 2013

Jumpgate Live Wallpaper v1.5

  - Update: Higher poly android!  Rounder and smoother!
  - Update: Icons for different sized devices
  - Google Play Link 

This is a minor update to get appropriate icon artwork in place, and in the process we up-resed the Android so he's quite a bit rounder looking now.  Check it out!


Tuesday, July 2, 2013

Canabalt v2.1

(Google Play Link)

It's been a while in coming, but I've just pushed live a major update to Canabalt HD that adds a number of new features.  We've worked with Adam for a while on this to implement several new game modes in addition to multiplayer support!

The new game modes are a set of challenges designed to accentuate different types of obstacles and gameplay elements, and each one unlocks an Achievement, both in single and multiplayer mode.  Try running along invisible buildings or see how far you can get with no obstacles slowing you down!  Multiplayer works both with Ouya controllers or on your touch screen, with each half of the screen controlling one of the players.

This update's got a ton of new content and we hope you all really enjoy it!

Wednesday, June 26, 2013

Fireflies v1.05

  - Update: Sparse Trees background
  - New Feature: Customize firefly colors
  - Google Play Link

This update implements a couple of user suggestions, notably the ability to customize the color of the firefly lights.  There are also a couple of other minor improvements and we've added a new background selection to the list as well.

KF Fireworks v1.1

  - New Feature: Music response!
  - Google Play Link

We did some experimentation with this on another project, and figured it'd make a fun update for Fireworks as well.  Enable this feature and fireworks will launch based on the currently playing music track!

The biggest snag is that it relies on standard compliance on the part of the manufacturers, as we need to know what channels to listen to.  This works fine on most devices but some Samsung software doesn't adhere to the standard properly and so you may not see a response there.  Unfortunately there doesn't appear to be a good way to work around this.  :/

Saturday, May 4, 2013

Space Battle Live Wallpaper v1.3

  - New Feature: Retro 3D art set!
  - Bug Fix: Resizing issue on some handsets
  - Google Play Link

This includes a few small bug fixes, but the main thing in this update is a new set of Retro 3D styled artwork for the player and enemy ships!  This is a Starfox-styled flat-shaded low poly look that's a fun change from the more traditional sprites.  :)

Friday, April 26, 2013

Blue Skies Live Wallpaper v2.2

  - New Feature: Phases of the moon
  - Bug Fix: Issues with resizing on some devices
  - Google Play Link

We got a bug report a while back about our wallpapers improperly resizing themselves on Cyanogen devices, specifically when the notification bar was set to auto-hide.  It took a surprisingly long time to track this down, but it's fixed now and that bug fix should show up on everything we update going forward.  The actual issue, in the end, was an && instead of an ||.  Such is the nature of things.  :P

We try to have something visible when we update though, so for Blue Skies you'll now find that the moon respects its proper phase.  Enjoy!

Friday, April 12, 2013

City at Night Live Wallpaper v1.2

  - New Feature: Daydream support on 4.2+ devices
  - New Feature: Simulated scrolling on some devices
  - Update: New icons!
  - Google Play Link

This is primarily a maintenance release that brings City at Night up to our current framework version.  As a result we get some nice bonuses like simulated scrolling, Daydream support, etc.  Enjoy!

Monday, April 8, 2013

Photosphere Live Wallpaper v1.0

(Google Play Link)

We actually built this one a while ago, specifically as a response to this Reddit post.  Implementation took a bit of work but was relatively straightforward.  We were surprised to learn that all the actual sphere mapping/positioning information was stored as metadata inside the JPG, and that you were expected to use a bunch of Adobe custom libraries to read that data.  That took a day or so.  Once we had the data, we needed to create an appropriate sphere model with reasonable mapping, and write a shader that properly offsets everything using those instructions.  That went fairly quick, though getting the camera to behave well while respecting the bounds of the image took a few tries.  All told we had a largely working project within a couple days.

The real problem is, I wanted to include some default images.  If nothing else, I needed one for the Play listing.  I make a point of staying legal for things like that, and normally I'd either ask an artist to make something, or maybe browse some stock photo sites and look for good images we could get rights to... but we can't really do that here, as it's a fairly new feature and you can't find them on the usual photo sites.  The nature of the image makes painting one rather non-trivial, too.

So, I started contacting folks who had good ones (mostly on Google+) asking for permission to use their images, and mostly got ignored -- I'd imagine I sounded like a scammer or something.  Eventually I came across an excellent beach image by Kevin Flannery and he kindly granted permission to include his photosphere in with the product.  It's just one, but it's enough to make the market listing and have something sane looking when you first run the product.

After a bunch of delay as we finished off other projects, I finally sat down on Sunday and got Photosphere up and available for download.  Amazingly, even before I wrote this, AndroidPolice had already noticed and written an article about it.  Can't complain about that.  :)

This is currently a relatively lean product, so we've got a fully-functional free version up.  As Photosphere support gets bigger ideally we can hook in some additional functionality and have a paid version as well.  We'd love to have Picasa integrated, for example, once they have a way to filter to Photosphere images.  For now though it works, should handle any photosphere on any device, and I hope everyone enjoys!

Wednesday, March 20, 2013

Fireflies Live Wallpaper v1.0

(YouTube Link)
(Google Play Link)

This actually was uploaded a couple days ago, but I just got a video posted now.

Fireflies is a simple, serene backgroud featuring blades of grass blowing in the wind, and a collection of glowing fireflies swooping around amongst it.  You can select from a few different forest backdrops, adjust the wind speed, and control the colors you get at different times of day.

This one's not laden with a ton of complex settings, but ultimately I really like the concept, and think it makes a very good background.  Hopefully other folks agree!

Gallery Live Wallpaper v2.01

  - Bug Fix: Thumbnail highlighting on some devices
  - Google Play Link

This is a bit of a quirky issue that only appeared on certain devices.  In particular in landscape mode on the Nexus 7, you'd see the right-hand edge of the highlight overlay was missing.  Didn't affect useability but wasn't good looking.

This came down to a layout quirk.  Basically, the thumbnail size was defined as the same size as its layout container, but the layout container had a buffer size specified.  This (apparently) meant that when the gridview laid everything out, in some cases you'd end up with a non-square thumbnail and the overlay wouldn't line up right.

Regardless, as you can see by the picture, it works now!

Friday, March 15, 2013

KF Fireworks Live Wallpaper v1.05

  - Update: Added HowTo activity
  - Google Play Link

This is primarily a maintenance release, but also coincides with a free version of Fireworks being made available!  Check it out here!

Sunday, March 10, 2013

KF Fireworks Live Wallpaper v1.0

(YouTube Link)
(Google Play Link)

After a lot of on and off tinkering, we've finally got fireworks!  Several different kinds, in fact, and you can pick which ones you prefer to have available.  In addition, select from a collection of appropriate backgrounds or select your own custom image.

Fireworks also allows you go vary the intensity in a few different ways.  You can turn up how often a firework is launched, or increase the odds you'll get a burst of a whole bunch of them like a proper fireworks show would do!  You can also set off a firework in response to touching the screen, or enable a halo effect around them as they burst!

Hope everyones like it, and as always send over feedback if you have some.  :)

Wednesday, March 6, 2013

Autumn Tree Live Wallpaper v1.15

  - New Feature: Japanese Maple tree!
  - Update: Better blurring of background
  - Bug Fix: Gap in background on some devices
  - Google Play Link

The main thing for this update is a new tree species, with the extremely pointy leaves of the Japanese Maple being added to the list.  Check out the pic!

In addition, we've updated the shader that handles the background to use a better blur function, it's a proper Gaussian blur now and does two additional samples, but should run at about the same speed due to some other optimizations.  This should largely fix the problem of visible cross-hatching on high-res devices.

This also fixes a small gap that was visible on the far left/right of the background on some devices.  Not a huge problem but it shouldn't have any artifacts now.

EDIT:  Fixed a crash issue about 12 hours after this was posted, sorry about that folks!

Wednesday, February 20, 2013

Jumpgate Live Wallpaper v1.26

  - Bug Fix: Better specular shading
  - Google Play Link

I'm not sure what happened last update, but our specular highlighting got really flat.  This build fixes that, sorry for the mistake folks.  :/

KF Flames Live Wallpaper v1.3

  - New Feature: Heat shimmer!
  - New Feature: Daydream support on 4.2+ devices
  - New Feature: Simulated scrolling on some devices
  - Update: Nicer looking settings screen
  - Google Play Link

We did some experimentation heat distortion on the background, and you'll find the results in this update.  It looks pretty solid, though the additional pixel shader work required means it's a bit sluggish on some of the older Tegra2 high-res devices.  As a result we're defaulting it to off, but please give it a try and see what you think!

In addition, this update contains the various maintenance stuff other recent updates have, including Daydreams and simulated scrolling and so on.  The settings screen is now using the Holo theme and has a nicer thumbnail-using list for picking the background image, as a bonus.

Thursday, January 31, 2013

Jumpgate Live Wallpaper v1.25

  - New Feature: Daydream support on 4.2+ devices
  - New Feature: Simulated scrolling on some devices
  - Update: Misc stability improvements
  - Update: Holo-themed settings screen
  - Google Play Link

It's been a while since Jumpgate got an update, apparently long enough that it was still using the old-style settings screen.  This update brings it up to date on our current framework, which brings with it some good perks like Daydream support, simulated scrolling if you have a device that doesn't scroll the wallpaper on its own, and various other small fixes.

This also updates the SDK version so you get a nicer looking settings screen!

Friendly Bugs Live Wallpaper v2.15

  - New Feature: Daydream support on 4.2+ devices!
  - New Feature: Simulated scrolling in some devices.
  - Bug Fix: Gap at edges of background on some devices
  - Google Play Link

Nothing earth shaking here, this is primarily a maintenance update that also fixes a camera issue on a few devices (notably the Nexus 7).  Daydream support is now in and working as well, so break out your dock and have butterflies hang out while charging.

Tuesday, January 29, 2013

Space Battle Live Wallpaper v1.25

  - New Feature: High scores!
  - New Feature: Lives!
  - New Feature: Daydream support on 4.2+ devices
  - Update: Explosions reflect hero/enemy weapon colors
  - Update: Better list selections on settings screen
  - Update: Better handling of top/bottom placement
  - Google Play Link

It's been a while since Space Battle got an update, and we've been discussing it on and off for a while.  Since we're simulating a game here, we've gone ahead and added both lives and real score tracking -- complete with high score counter.  You can adjust the positions of these up or down to make them line up nicely for your particular device.  :)

In addition, some other minor stuff happened.  Enemy and player explosions now reflect the color of their weapons, Daydream support is in and working, the list selections on the Settings screen look nicer now, and so on.

We flirted all too long with making an online scoreboard and turning this into some sort of retro ProgressQuest...  Maybe next update.

Thursday, January 24, 2013

Integrating Picasa into Android Apps

In our most recent update of the Gallery Live Wallpaper, we added Picasa support.  We were a little more ambitious this time, so we decided to experiment with letting users access their personal Picasa accounts, which are tied to their Google accounts.  What followed was an adventure through older, soon to be deprecated Google APIs, and upcoming, not quite out of beta APIs.

Google has some pretty good documentation on the Picasa web interface:

https://developers.google.com/picasa-web/docs/2.0/reference

We were actually able to use this pretty easily to run searches of publicly available Picasa photos that we could then download for use in the Gallery Live Wallpaper.

In order to use users' private accounts, though, we need to authenticate them with Google using OAuth2.

Google makes it a point through all of this to encourage people to use their client APIs rather than hand coding all of the access to various web connections.  In looking up these libraries, though, there seem to be two editions:

Google Data Java Client Library

Google APIs Client Library for Java

Primary Picasa support is in the GData library, but this library is specifically noted to not support Android.  The new Google APIs has references to it, but it's mostly in a generalized area, Google Data APIs.

It's slightly concerning that the new Google APIs libraries are still in beta, but they largely seem to work.

There are a couple incomplete examples of Picasa support immediately available from the Google Data APIs links, but we wanted to see if we could find something more substantial, especially something that included logging in with OAuth2.

Within the Google Data APIs section, there's a sample command line Picasa implementation that makes reference to a namespace, com.google.api.services.picasa.  Some Google searching revealed this source project:

https://code.google.com/p/google-api-java-client/source/browse/shared/gdata/shared-sample-picasa/src/main/java/com/google/api/services/picasa/?repo=samples&r=97e6060623a400769dfaa72dbe20e66e00a81620

This provided a good base for creating our authenticated Picasa interface, along with the command line sample.

Library Dependencies

There are two main sets of libraries we need for Picasa and authentication: the Google APIs Client Library for Java and the Google Play Services library, obtained from the Android SDK manager in the Extras section.  The latter is not very clearly spelled out.  We didn't find it for a while, and encountered some mysterious java.lang.VerifyError exceptions.  It's referenced in the Android Task-sample project setup instructions.

As a quick note, the Google documentation talks a lot about getting client IDs and secrets to register apps for proper access to the various Google APIs.  This blog post notes that for Android, you can bypass the entire system by listing your app's package name and SHA1 signing key, which the Google client libraries will pick up and use to perform the same function automatically.  You can do this at the Google APIs Console, which is the same place you set up your client ID.

Authentication Process Overview

In order to authenticate properly, the process needs to launch Google Play to let the user allow the application to access their Picasa account.  This is done through Activity.startActivityForResult(), which means that the actual initial authorization has to run through our wallpaper settings activity, rather than the backend service we use to help downloading images asynchronously.  So we launch the authentication process when the user chooses the setting to use their personal Picasa account, and we don't allow that setting to actually be set until the full authentication process completes successfully.

In addition to needing to wait for the external Google Play activity to return, we also need to account for the authentication token expiring or being invalidated.  In that case, we need to forcibly invalidate the token we're using locally, so that the next time we make an authorization request, OAuth2 correctly requests a new token.

Most of this should be invisible to the user, but because the requests and retries take a while, our "authenticating Picasa account" dialog can stay up for 30 seconds or more.  The user should just be presented with the authorization activity from Google Play the first time, and then authentication should proceed more quickly afterwards.

Also, useful for both users and developers, we can revoke access through Google at any time.  Log in to your Google account, go to your account settings, select Security, and go to Connected applications and sites.  Clicking Manage Access here will bring up a page with all your authorized apps, where you can manually revoke any authorization you choose.

Authentication Code Sample

 Using the Android Tasks sample as a base, we can use Google's classes to do the vast majority of the authentication work.

import android.accounts.Account;
import com.google.api.client.extensions.android.http.AndroidHttp;
import com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential;

import com.google.api.client.http.HttpTransport;
import com.google.api.services.picasa.PicasaClient;
import com.google.api.services.picasa.PicasaUrl;
import com.google.api.services.picasa.model.UserFeed;


// ......

final HttpTransport transport =
     AndroidHttp.newCompatibleTransport();

final GoogleAccountCredential credential =
     GoogleAccountCredential.usingOAuth2(
          getContext(),
          "https://picasaweb.google.com/data/" );

final Account[] accounts = credential.getAllAccounts();

credential.setSelectedAccountName( accounts[0].name );

PicasaClient client = new PicasaClient(
     transport.createRequestFactory( credential ) );

client.setApplicationName( "KF-GalleryLiveWallpaper" );

PicasaUrl url = PicasaUrl.relativeToRoot(
     "feed/api/user/default" );

try
{
     UserFeed feed = client.executeGetUserFeed( url );
}
catch ( Exception e )
{
     /* Error handling for launching Google Play authentication, old token invalidation, etc. */

}

The scope required for GoogleAccountCredential.usingOAuth2() is noted in the Picasa Web API protocol documentation.

We also found that none of the actual requests out to Google services happen until we actually execute the Picasa request.  This is why the executeGetUserFeed() line is caught, but none of the preceding setup is.

The other big thing is that we cannot run any of this on the main activity thread or UI thread.  The system specifically throws a runtime exception about this, because the OAuth2 process can block while waiting on network responses, potentially creating a deadlock.

Final Notes

There are a lot of topics only touched on here, including more detail about handling errors in the authentication process.  There's also more study to be done on the Google Atom XML parser used for the Picasa data model classes.  And while our purpose for the Gallery Live Wallpaper is simply to search and display photos, the Picasa Web API also allows uploading and editing photos.

Picasa is quite accessible within an Android application.  The trick has been to pull together all the documentation necessary to do so.

Monday, January 21, 2013

Gallery Live Wallpaper v2.0

  - New Feature: Added Picasa support, including personal accounts  - New Feature: Simulated scrolling on some devices
  - New Feature: Help and introductory text
  - Update: Separated retriever service from wallpaper service
  - Google Play link

This update has been brewing for a long time, and is using a framework we created (that at this point is well tested on a number of products) to handle background downloads from a content source.  It shouldn't look much different to you on the surface, but should be better behaved overall.

In addition, we've added support for Picasa.  By default this is public images only, but if you allow us to use your credentials it can include your personal images as well.  Clear the search terms and it'll just show your personal images.

In addition, we've added some help functionality and intro text that should help get new users going.

Friday, January 4, 2013

Koi Live Wallpaper v1.65

  - New Feature: Disable shadows checkbox
  - Update: Rearranged some items on prefs screen
  - Google Play Link

Not a world changing update, but some folks didn't care for the fish shadows.  It's been a few days now, but if they still feel that way there's now an easy way to disable it.