In 2008 MIT professor Hal Abelson was on sabbatical at Google in Mountain View California. Professor Abelson had already spent decades developing engaging ways for kids and other non-computer scientists to learn how to program and Google had already spent several years developing Android software for mobile devices. But developing even a basic mobile application on Android was hard work, out of reach for just about anyone other than an experienced software engineer. Professor Abelson had an idea: create a block-based programming environment that would enable non-computer scientists develop mobile applications for Android phones.
Getting started with App Inventor is a free and easy process. Creating an application is done online in a web browser (at ai2.appinventor.mit.edu.) and apps can be tested directly on your Android device. All you will need is to download the MIT AI2 Companion App and a QR scanner onto your device (both free). As you develop your app, you can scan the QR code that App Inventor generates for it onto your device to see how it works. If you do not have access to an Android device, you can download the phone emulator onto your computer (a pretend phone), and test your app through the emulator.
Designing a mobile application with App Inventor involves two main phases. First, one needs to decide what components to include in the application and where to place them. Next, one must program each component.
For example, perhaps I would like to create a somewhat silly application in which every time the user touches an image on the screen, the phone emits a funny sound. I need a component that is “clickable”, and perhaps another component that provides brief instructions for the user. Of course I would also need a component that can store a sound. Each component that I drag onto the Viewer screen can be thought of as containing a hidden box of commands that I can later use to code it, and part of coding with App Inventor is familiarizing oneself with which component can be programmed to do what. For instance, a “Button” can be programmed to respond to a click, however a “Label” cannot. A “Sound” component is the only component that can be used to store a sound.
Once I have designed the opening screen of my application, I can switch from the Designer window to the Blocks window, and choose which component to program first. Each component that I dragged into the Viewer on the Designer window is listed in the margin of the Blocks window. I select the component that I want to program first, and connect the blocks of code that tell that component what to do. In this case, I might first select the Button component, and use the blocks of code associated with it to follow instructions that translate to “when clicked, call the sound component and have it play the sound”. This is quickly done by connecting two blocks of code. Of course I would need to already have the sound loaded onto the sound component in order for my application to function properly.
If you are thinking that clicking a button and hearing a sound may be fun, but not particularly useful, you will be glad to hear that App Inventor can do much more. In fact, App Inventor consists of an impressive range of blocks, from speech to text, to drawing and animation, sensors, and even databases. Interested in controlling your most recent Lego Mindstorm creation with your phone? There are blocks for that. How about a mobile app that connects to an Arduino project? This is possible as well. And what if all of the devices at your house are made by Apple? App Inventor is now available for trial on iOS machines, with a more complete rollout likely to happen by mid 2019
Ready to give it a try? Check out the App Inventor and click on the Create button to get started on your first app!