Monday, May 10, 2010

Android App Surgery: "AndCam3d"

The second of my Android App Surgeries, you can vote for which app I should review next, or nominate your own app for review on the Android App Surgery Moderator page.
This week's surgery looks at AndCam3d, a clever little app that lets you construct 3D images as wigglegrams, stereograms, or anaglyphs.

User Experience

Unlike last week's app MySettings, which provided shortcuts to existing functionality, AndCam3d offers something entirely new. Using a SurfaceView to show a live camera preview, it allows you to take multiple photos from different positions - using them to construct  3D images.

There's a particular UX challenge associated with introducing a user to novel functionality while keeping it simple, intuitive, and easy to use.

Unlike traditional software, it's unlikely that your users will know anything about your app beyond the title and the description from the Market.  So when introducing a new workflow users need to be able to get started quickly, before they give up and claim it "doesn't work".

AndCam3d does this well by displaying up a set of instructions (with images!) the first time the app is run, an approach similar to that used by Google Goggles. In this instance Dialogs are used, overlaying the instructions over the camera preview. Personally, I feel that Activities might be a better fit, and have these additional observations on the instruction screens:
  • Having the camera on and displaying a preview in the background while I'm reading the instructions causes the app to take longer to start, and drains battery while I'm reading the instructions.
  • Using Dialogs over a landscape-only Activity restricts me to reading the instructions in landscape mode.
  • Consider renaming the "cancel" button to "continue" (or similar). You're dismissing the instructions, not canceling an action. 
  • There are links within the instructions to websites - use Linkify to make them clickable!
  • In Windows applications an ellipsis (...) at the end of a menu item means "opens a dialog". In mobile apps this isn't a well established metaphor. I'd suggest using an arrow, such as the one used in the system settings to indicate a dialog or new Activity.
I really like the UI for taking photographs.
 Having the two stateful eyeball buttons in the bottom left and right corners is an intuitive way to guide user action. I think it could be even better with the following minor tweaks:
  • When taking my first picture I would have appreciated more guidance. A tutorial like on-screen guide ("click here to take the left-hand picture", "now click here to take the right side", "now click here to compose the stereograph!") - for the first picture only - would have helped me get up to speed more quickly.
  • The eyeball icons (particularly the hands) aren't high-res enough to look good on the Nexus One.
This app is new, but the basic action (taking a photograph) is familiar. I like the way the new functionality has been incorporated, but I'd love to see some of the UX from standard camera app integrated here. The good news? The camera app is open source, so you can totally steal this stuff:
  • I'd like to review of each image I create, and an onscreen icon link to the last image I constructed. Clicking it should display the last image so that I can evaluate and manage it. Using the current UI it wasn't obvious to me where my new stereographic image had gone.
  • Like the camera app, I'd like to see the "Share" and "Send" menu items moved to the (new) image preview Activity. Neither of these verbs make sense without the context of an image.
  • The "Share" menu item links to a custom "share via Flickr" dialog. I'd love to see share use the standard sharing Intent (annoyingly named Send) based on the last / current image. To include the Flickr sharing, I'd create an Intent Filter to listen for the Send Intent to enable your app to share any image via Flickr, not just the stereograms I create.
Finally, it's great to see the standard Menu system in action, and the Preference Screen too -- especially the use of the standard icons for preferences and help. Without being a pedant, I'd suggest being even more consistent with the system defaults by:
  • Sticking to greyscale images for menu icons.
  • Renaming "Preferences" to the more commonly used "Settings".
Android Features

It's a great app, and there are a couple of pretty cool Android features you might want to consider to make it sparkle a little more uniquely.

Live Wallpaper. Why not allow users to set their latest wigglegram as a wallpaper? Live Wallpapers are dynamic, so you could easily create one that would quickly switch between two images to display a wigglegram.

Camera Parameters. Android 2.0 supports modifying camera settings and effects. It would be great if it allowed users to set some camera parameters before taking each picture.

Stability / Performance / Risk

Stability-wise, I didn't have any problems. No crashes, no failures. Good to see that the manifest requires camera hardware be present.

I did notice that on the Nexus One it requests an invalid camera preview size. To avoid potential hardware-related failures, always check to see which preview sizes are valid before setting one.

Get Your App Reviewed!

If you'd like to see your app reviewed, you can self-nominate at the moderator site. You can also go there to vote for which app you'd like to see reviewed.


  1. I bought the app after reading your surgery, but I will give it back. The wigglegrams don´t work on the device (I wouldn´t mind a non-gif file). Writing a activity that alternates between two images shouldn´t be too difficult to write. And I don´t want to carry 3D glasses with me all the time..

  2. Anonymous8:18 pm GMT

    I bought this app a while back. Worked great on my G1 and Cliq, but it doesn't work at all on my new myTouch 4G phone. Far to late to get a refund. Awesome app, I hope the dev fixes whatever is wrong.