Today we’re going to take a look at Google’s App Inventor feature that offers programming-novices a nice possibility to enter the fabulous world of Android App programming without deeper knowledge of the API or complex SDK installations.
So lets build some stuff ..
Prerequisites
-
A Google App Inventor Beta Account – request one here
What we are going to build
-
We are building a simple GUI with a Textbox and a button
-
A click on the button starts an event that queries the acceleration sensor for coordinates
-
If the sensor is active and enabled then the coordinates are displayed in the text box
Project and GUI
-
Log into the App Inventor homepage and create a new project – I named this one “testproject“
-
We want the textbox and the button to be arranged side-by-side so we’re using a Horizontal Arrangement – click on Screen Arrangement and drag Horizonzal Arrangement to the Android screen
-
Now click on Basic and drag a TextBox and a Button onto the Horizontal Arrangement
-
We’re going to need the acceleration sensor so click on Sensors and drag a Accelerometer Sensor onto the screen
-
That is all we need for now in our GUI so save your project – we are going to add some logic now ..
-
That’s what my screen looks like
Control Logic
-
The Android Blocks editor is started via Java Web Start – simply click on “Open the Blocks Editor” and run the application
-
In the first step we want to handle a click event on the button so click on My Blocks, click on YourButtonName and select the “when Button.Click do” Element
-
Before we do anything with the accelerometer sensor we want to test if the sensor is available, so click on Built-In > Controls and drag the “if test then-do” Element to the first element we have created
-
Now to add the if-condition goto My Blocks > AccelerometerSensorName and drag the AccelerometerSensor.Available Element to the preceding test node
-
Now we’re going to define the action that takes place if the button is clicked and the sensor is available – to get some coordinates and display them in the text box – at first drag the My Blocks > TextBoxName > TextBox.Text element onto the if-then element
-
We want to create a string that displays the coordinates like this example: “x: 134.44 y: -44.54 z: 22.36” so we’re going to need string functions which can be found under Build-In > Text – select the “make text” element here and drag it onto the preceding element
-
Select from the text functions a text element, click on its label, change it to “x: ” and drag the element to the first position of the make text element
-
Go to My Blocks > AccelerometerSensorName and drag the AccelerometerSensor.XAccel element to the second position of the make text element
-
Repeat the last two steps for the y and z-coordinates and return to the App Inventor Website – do not close the block editor yet because the next step requires a running instance..
-
Here is a screenshot of my result
Deploy and run
-
There are three possibilities to deploy your application: To generate a QR code to download the app in your smartphone, to download the generated apk-file in your browser or to directly install the application via USB.
-
If your usb connection works with the App Inventor you’ll probably want to use this possibility
-
Now run your application and enjoy :D
Conclusion
Google’s App Inventor enables you to create simple applications in a short time without deeper knowledge of the Android API so perhaps this creates an entry point for interested app developers. On the other side there are only a few features of the rich Android API supported yet but of course – it’s a beta version. I still hope that Google is going to put some of this work back into the SDK and especially into the “GUI builder” for my Eclipse IDE ;)
If you want to see how this application is achieved using the SDK .. take a look at the article Sensor Fun: Using the accelerometer on Android
Watch the inventor in action on YouTube.
Resources
Article Updates
-
2018-06-01: Embedded YouTube video removed (GDPR/DSGVO).
-
2015-03-03: Table of contents and image captions added.