Stay on Top of Enterprise Technology Trends
Get updates impacting your industry from our GigaOm Research Community
Google (s goog) last week introduced the Android App Inventor, a simple development environment for creating mobile apps for Android handsets. I’ve spent a few hours kicking the tires of App Inventor, both alone and with my 12-year old son Tyler, and found the tool set to be a fun and relatively easy way to build software. But make no mistake — even though you can use the App Inventor environment to create apps for your handset, it’s still an early work-in-progress with limitations as evidenced by its beta tag.
The limitations don’t make using App Inventor any less enjoyable, though. Tyler and I have run through the various tutorials to create some basic apps and for us non-programmer types, there’s a feeling of accomplishment when getting the app working properly on a phone. And by using the tutorials, we learned concepts that will be the building blocks of our own apps. For example, the first hands-on lesson taught us how to add an image to an app and then have the phone do something when the image was tapped. Now that we know how to use that specific event, we can build an app with different interactions. And that’s really what App Inventor is all about — learning about mobile software programming concepts in a fun environment.
So how does App Inventor foster such learning? In typical Google fashion, nearly the entire tool set is an online experience. Your phone display palette is on a web page as are all of the controls such as buttons, a clock, images, and any other visual objects an end-user would see in your software. To use a control, you just drag it over to the phone screen within the same webpage and then fill in any attributes as needed. Examples of such attributes could be the color of a button or the text for a label. Think of this page as the visual look of your app.
Adding logic events are done through a secondary window called the Blocks Editor. This Java-based application knows about the visual objects in your app and uses a LEGO-like, puzzle approach to create programming flow. For example, one of the tutorials creates an app that allows you to draw with a fingertip on your Android phone.
A perfect example of using the Blocks Editor is when Tyler wanted to allow a user to change the color of the digital ink to red by tapping a button. In the Blocks Editor, he put the appropriate blocks for such an event inside the “ButtonRed.Click” block, telling the program to change the paint color when a user taps the red button. There’s a reasonably large number of events in the Blocks Editor to use — I was able to open the browser on my phone to a specific web page by tapping a button in one of my apps. Google allows access to the GPS, camera and other installed apps from within software created with the App Inventor.
The puzzle-piece approach may look familiar to some because it’s based on Scratch, a programming environment developed by the Lifelong Kindergarten group at the Massachusetts Institute of Technology. Google has leveraged the Open Blocks Java Library project — also an M.I.T. export — and added Android-specific bits to the compiler, so you can create an actual .apk, or software installation of your app for Android phones. App Inventor also creates a QR code for your app, so in theory, you have all the pieces needed to submit your software to the Android Market. But I don’t expect many will do that, mainly because of the limitations I alluded to earlier.
I’d like to pull in RSS feed in to an app, for example, but I see no way to do that. Right now, there are few APIs to use for external data — the environment can connect to Twitter, Amazon or other web services that conform to a specific protocol using the TinyWebDB component. For now then, Tyler and I are just having fun putting puzzle-pieces together and learning some programming basics. In the future, it wouldn’t surprise me if Tyler builds a useful app for Android phones as he learns more and as the App Inventor matures as a learning platform.