MIT App Inventor
Last updated
Last updated
MIT App Inventor is a platform to ease the process of creating simple applications without having to learn or use too many programming languages. We can design android applications as we wish using a variety of layouts and components available.
Below is how to use MIT App Inventor. If you need help and find flaws in this tutorial, please contact us via support@antares.id
In MIT App Inventor there are two main pages, namely the designer page and the blocks page. The designer page is used to design the appearance of the application with various components and layouts provided as desired. While the blocks page is used to programme the course of the android application in accordance with the objectives.
On the designer page there are several windows such as Palette, Viewer, Components, Media, and Properties. These tools function to design the appearance of the android application as desired.
Palette is a window where components categorised in several categories are taken to be included in the application created. There are User Interface, Layout, Media, Drawing and Animation, Maps, Sensors, Social, Storage, Connectivity, LEGO MINDSTORMS, Experimental, and Extension categories.
The Viewer is a place to set the appearance of components in the application later.
Components is a place to manage the components that have been placed in the viewer, such as renaming components, and deleting components.
Properties is a place to set screen properties, and components used in the application being created such as width, height, background colour, font size, etc.
Media is a place to upload images to be used in the application being created.
In the Palette section there are constituent components for designing applications, here are the constituent components:
Symbol | Name | Function |
Button | It can detect a tap, a hold down when the user presses a button, or when the user releases a button. When the button detects any of these, it will execute the command. | |
Checkbox | Can detect taps from the user and change its state to true/false (boolean). | |
Date Picker | Bring up the calendar to select a date. | |
Image | Inserting images in the application. | |
Label | Display text in the app. | |
List Picker | Displays a list that can be selected by the user when the user presses the list. | |
List View | Display the list. | |
Notifier | Display a pop-up message/warning in the application. The message can disappear automatically, or must receive input from the user before it disappears. | |
Password Text Box | Provides a textbox that hides the entered text. | |
Slider | Provides a swipeable progress bar. | |
Spinner | Displays a pop-up list with elements that can be selected when pressed. | |
Text Box | Provides an area to type text. | |
Time Picker | Bring up the clock to select the time. | |
Web Viewer | Provides an area that can display web pages. | |
Switch | A switch that triggers an event when the user clicks on it. There are many properties that affect its appearance that can be set in the Designer or Blocks Editor. |
Symbol | Name | Function |
Horizontal Arrangement | Arrange the components horizontally. | |
Horizontal Scroll Arrangement | Arranges components horizontally, but if the width of the component exceeds the width of this component, it can be scrolled. | |
Table Arrangement | Creating a table. | |
Vertical Arrangement | Arrange the components vertically. | |
Vertical Scroll Arrangement | Arranges components vertically, but if the height of a component exceeds the height of this component, it can be scrolled. |
Simbol | Name | Function |
Camcorder | Activate the mobile phone camera and record. | |
Camera | Activate the mobile phone camera and take a picture. | |
Image Picker | Display the gallery on the app. The user can select the image to be saved from the displayed gallery. | |
Player | Play music/audio and adjust mobile phone vibrations. | |
Sound | Play music/audio and set the mobile phone to vibrate in specific time intervals. | |
Sound Recorder | Recording sound. | |
Speech Recognizer | Convert voice to text using the speech recognition feature on mobile phones. | |
Text to Speech | Converts text into sound. Pitch and reading speed can be set. | |
Video Player | Play videos and display their settings. | |
Yandex Translate | Translate text from one language to another. |
Symbol | Name | Function |
Ball | A sphere sprite that can interact on touch and pull, as well as interact with other sprites on the canvas. | |
Canvas | The canvas where sprites interact with the user or with other sprites, or where the user draws. | |
Image Sprite | An image sprite that can interact on touch and pull, as well as interact with other sprites on the canvas. |
Symbol | Name | Function |
Circle | Visualises a circle with a specified radius (in metres) at specified coordinates. Can also be used to run a programme when the user is in an area. | |
Feature Collection | Grouping the features of Maps. Events that occur on one of the components in the group, will trigger events on the other components. | |
Line String | Draw lines on the map. | |
Map | Display the map on the app screen. | |
Marker | Mark a location on the map. | |
Polygon | Create a perimeter on the map. | |
Rectangle | It is a polygon with latitude and longitude for the north, south, east, and west boundaries. If the corners of the quadrilateral are moved, the coordinate information will be updated. |
Symbol | Name | Function |
Accelerometer Sensor | Detect wobble and acceleration in m/s2. | |
Barcode Scanner | Reading barcodes. | |
Barometer | A sensor component that can measure ambient air pressure. | |
Clock | A non-visible component that provides instant time using the internal clock in mobile phones. It can switch on the timer at regular set intervals and perform time calculation, manipulation, and conversion. | |
Gyroscope Sensor | Measure angular velocity in degrees/second. | |
Hygrometer | A sensor component that can measure relative ambient air humidity. | |
Light Sensor | A sensor component that can measure light levels. | |
Location Sensor | Provides geographic information such as coordinates, altitude, speed, and address. Can also convert addresses to coordinates. | |
Magnetic Field Sensor | A sensor component that can measure the ambient geomagnetic field for all three physical axes (x, y, z). | |
Near Field | Allows apps to activate the near field communication (NFC) feature. | |
Orientation Sensor | Determine the orientation of HP. | |
Pedometer | Determine the number of steps, and the distance travelled. | |
Proximity Sensor | Measures the distance between the object and the mobile phone screen. | |
Thermometer | Sensor components that can measure the ambient (external) temperature. |
Symbol | Name | Function |
Contact Picker | Displays a list of contacts when pressed. | |
Email Picker | Displays a list of emails when the user types in a keyword or the email of the target person. | |
Phone Call | Make phone calls. | |
Phone Number Picker | Display a list of contact numbers on the mobile phone screen. | |
Sharing | Allows the exchange of files or messages between one application and another application on the mobile phone. | |
Texting | Send a text message to a contact number. | |
Enables communication with Twitter so that users can create tweets, view tweets, etc. |
Symbol | Name | Function |
CloudDB | A non-visible component that allows you to store data on a database server connected to the Internet (using Redis software). | |
Data File | A component that allows reading CSV and JSON data. DataFile contains relevant functionality to access CSV or JSON parsed data in the form of rows or columns. | |
File | Receive or send files. Can also be used to read or write files. | |
Spreadsheet | Spreadsheet is a non-visible component for storing and receiving data from Spreadsheet documents using the Google Sheets API. | |
Fusiontables Control | Enables communication with Google Fusion Table. Google Fusion Table can store, share, query and visualise data tables. | |
TinyDB | Stores data for the application so that when the application is closed, and then reopened, the data is still stored. | |
TinyWebDB | Store data on the web. |
Symbol | Name | Function |
Activity Starter | Call other apps. | |
Bluetooth Client | Create an application as a Bluetooth client. | |
Bluetooth Server | Create an application as a Bluetooth server. | |
Serial | Serial components that can be used to connect to devices such as Arduino | |
Web | Allows applications to interact with the web and provides functions for HTTP GET, POST, PUT, and DELETE. |
Symbol | Name | Function |
FirebaseDB | Allows application users to exchange data in the database with Firebase. |
On the blocks page there are several codeblocks that function to programme the android application as desired. On the block page there are several components such as Control, Logic, Math, Text, Lists, Colors, Variables, and Procedures. The following are the components found on the blocks page:
Block Code | Function |
If conditional. If "if" fulfils the condition, then the block that comes after "then" is executed. | |
Looping from the first number to the last number with an interval. So the picture beside means a loop from the number 1 to 5 with the interval 1: 1, 2, 3, 4, 5. | |
Multilevel for. For each object in the list, looping is performed. | |
If the test value is true, the while loop runs. |
Block Code | Function |
Boolean true/false. | |
If paired with true/false then true becomes false, and false becomes true. | |
Checks whether an object is equal to/not equal to the object on the right. If it matches the criteria, the block will return true, and false if it does not. | |
In and logic, if both conditions are fulfilled, the value becomes true. Whereas in or logic, if one or both conditions are fulfilled, then the value becomes true. |
Block Code | Function |
Used to input numbers. | |
Used to compare two numbers. Comparisons can be equal to, not equal to, more than, less than, more than equal to, and less than equal to. | |
Basic maths operations, namely add, subtract, multiply, divide, power and modulus. | |
Randomly retrieves an integer value from the specified range. | |
Trigonometric operations sin, cos, tan. |
Block Code | Function |
Blank text. | |
Combine two or more texts. | |
Checks if the text is empty or not. | |
Check if there is a specific section in a text. | |
Separates the text at certain markers and makes it into a list. |
Block Code | Function |
Create an empty list. | |
Make a list. | |
Add an element to the list. | |
Checks if a certain element exists in the list. | |
Checks the number of elements in the list. | |
Checks whether the list is empty or not. | |
Retrieve elements from a list. | |
Remove elements from a list. |
Block Code | Function |
Colour options provided by MIT AI. | |
Create your own colours using RGB colour codes. |
Block Code | Function |
Create a global variable. | |
Retrieve global variables. | |
Modify the contents of a global variable. |
Block Code | Function |
Create a procedure. | |
Create a function that returns a specific result. |
After we know about MIT App Inventor and its features, next we will create an application that will connect to the ANTARES server to send and receive data.
Send data (post) in the MIT App Inventor section, is a command used in the MIT App Inventor application to be able to post data manually from the data we input in the MIT App Inventor "text box" to the ANTARES Platform. Before making code blocks for the Post application, it can be done by making a design first. The component design that we have made, functions as a tool that will help users to be able to run the application that has been made. An example of a design for the Post Data application from MIT App Inventor to ANTARES is as follows:
The above design uses several components, namely:
No. | Palette | Komponen | Nama Komponen |
1 | User Interface | Label | Header |
2 | User Interface | Label | Temperature |
3 | User Interface | Label | Humidity |
4 | User Interface | TextBox | TextBox1 |
5 | User Interface | TextBox | TextBox2 |
6 | User Interface | Button | PostButton |
7 | Layout | HorizontalArrangement | HorizontalArrangement1 |
8 | Layout | HorizontalArrangement | HorizontalArrangement2 |
9 | Connectivity | Web | Web1 |
After we create the design of the application display, the next step is to create a programme to run the application as intended. To programme it, we use the code blocks found on the blocks page.
To be able to send data to the ANTARES server, the data transmission format uses JSON format. The following below is the JSON format along with code blocks:
After we make the design and programme for the application, then we will see the data sent to the server through the ANTARES console (https://console.antares.id/dashboard/application). The following is the data displayed on the ANTARES console:
The Get data application with MIT App Inventor is a simple application that will display the data we take from a platform via URL and Header. In this Get Data process using the ANTARES platform. The example we made, tries to get data from the ANTARES documentations "Retrieve Latest Data". Before creating the Get Data application on MIT App Inventor, we first create a design for the application as follows:
The above design uses several components, namely:
No. | Palette | Komponen | Nama Komponen |
1 | User Interface | Button | Button |
2 | User Interface | Label | Header |
3 | Connectivity | Web | Web1 |
After we create the application design, we then programme it using the available code blocks as follows:
After we design and programme the application, we can see the results in the android application that we created earlier. The data displayed is the last data from the console in ANTARES which has JSON format. Here is the result display:
In this section, an application is created that can retrieve data from Antares, display it on the screen, and update the displayed data automatically if the user wants to get a live measurement. The data retrieved is temperature and humidity data obtained using the DHT11 sensor. The UI in this application consists of 3 sections, namely the instruction section, the results section, and the preview section. The following user interface settings are made on the MIT App Inventor (AI) "Designer" tab:
The above design uses several components, namely:
No. | Palette | Component | Component Name |
1 | User Interface | Label | Label1 |
2 | Layout | HorizontalArrangement | HorizontalArrangement1 |
3 | User Interface | Button | BGet |
4 | User Interface | CheckBox | CBLiveMeasurement |
5 | User Interface | Label | LRC |
6 | User Interface | Label | Label2 |
7 | Layout | HorizontalArrangement | HorizontalArrangement2 |
8 | User Interface | Label | Label5 |
9 | User Interface | Label | LTemp |
10 | Layout | HorizontalArrangement | HorizontalArrangement3 |
11 | User Interface | Label | Label6 |
12 | User Interface | Label | LHum |
13 | User Interface | Label | Label3 |
14 | User Interface | Label | LRaw |
15 | User Interface | Label | Label4 |
16 | Layout | HorizontalArrangement | HorizontalArrangement4 |
17 | Layout | HorizontalArrangement | HorizontalArrangement5 |
18 | Layout | HorizontalArrangement | HorizontalArrangement6 |
18 | Layout | HorizontalArrangement | HorizontalArrangement6 |
19 | User Interface | Label | Label7 |
20 | User Interface | Label | LJSON1 |
21 | User Interface | Label | Label9 |
22 | User Interface | Label | LJSON2 |
23 | User Interface | Label | Label11 |
24 | User Interface | Label | LJSON3 |
25 | User Interface | Label | LParsed |
26 | Connectivity | Web | Web1 |
27 | Sensors | Clock | Clock1 |
After we create the application design, we then programme it using the available code blocks as follows:
After we design and programme the application, we can see the results on the android application that we created. The data displayed is the last data and will continue to refresh automatically. Here is the result display: