Made in partnership with YR Media. An unprecedented opportunity for Computational Action. We invite our fantastically creative MIT App Inventor community from all ages to put their ingenuity to good use and create socially conscious mobile apps that will help defeat the spread of the disease, aid our local communities and give strength to our fellow world citizens in these difficult times.
Learn to use the open development tool, App Inventor, to program on Android devices. You will learn how to design and build mobile apps — apps that are aware of their location, send and receive This professional development program will continue to grow a global In the news Events Stories from the field.
App Inventor Blog. Get Started Follow these simple directions to build your first app! Start Now. Tutorials Step-by-step guides show you how to create even more apps.
Get Going. Teach Find out about curriculum and resources for teachers. Learn More. Forums Join community forums to get answers to your questions. Connect Now. MIT App Inventor Coronavirus App Challenge An unprecedented opportunity for Computational Action We invite our fantastically creative MIT App Inventor community from all ages to put their ingenuity to good use and create socially conscious mobile apps that will help defeat the spread of the disease, aid our local communities and give strength to our fellow world citizens in these difficult times.
View More. MIT App Inventor.Your App Inventor app uses the activity starter component to tell the Alarm Managerin how many minutes it should start the predefined app. For the example I'm using my Google Spreadsheet solutionwhich uploads a record into a Google spreadsheet. Everybody who submits a row into that spreadsheet will trigger automatically a message to be sent to the recipient's email address. This is another enhancement of my Google Spreadsheet solution using some lines of Google Apps Script.
Yes, you also can upload html files as assets into App Inventor! There is only one special thing to consider: During development, you have to use the development path to the embedded html document:. The tools extension offers the method PathToAssets which always returns the correct path to the assets.
See a basic example here how to use the WebViewString property.
This example solves a simple math puzzle in less than 1 second. A plain App Inventor solution would need several minutes to get the result! How to display a table in App Inventor without knowing how many rows and columns will be supplied Now including table listpicker and new layout!
The example displays an App Inventor list in a combobox providing a multiple choice listpicker. The example displays an App Inventor list in a jQuery Mobile Listview, which offers lots of possibilities! You can pass any HTML-style markup to the webviewer and display it during runtime of the app. And together with Hammer. As you can see from that page, a Pie chart is only one of several possibilities.
The solution does not require internet access! Download a file from the internet. Also an example of a file download from a Restricted Area is available. With this example you can pick an image from your device and upload it to my server. The different eMail solutions for App Inventor are listed here. Also it is explained, how to send an email including attachment.
Using the advanced features makes sense, if you have a lot of the same components here checkboxes and you like to execute the same action on them.
A screen always returns to the screen that opened it. You can get the effect of screens switching to arbitrary other screen by setting up a "manager screen" that is used for opening all the other screens. Open another screen and at the same time! Using this method there is no need of a manager screen. Both the bluetooth client and server modules are used to create a chat session. Both components are in the same app. The client component will be used for the device which starts the connection, the server component will be used for the device accepting the connection.
The devices must have been paired first. Pick a file from SD card with the help of the Activity Starter. Precondition: a file manager app is installed on your device. These are some examples, which do not work anymore because of Google updates or have become obsolete because of the new extension feature or added components in App Inventor, e. File component, Date picker, Time Picker.For those of you who are new to customizing applications by writing programs, the first question might be: what is an API?
API, or Application Programming Interface, is a term used to describe the functionality exposed by an application that allows it to be used through a program. For example, you can use Inventor's API to write a program that will perform the same types of operations you can perform when using Inventor interactively. Having an API is important because it allows you to add functionality to Inventor that is specific to your needs.
Inventor, by necessity, is a general CAD system, meaning that it's not aimed at any specific industry or used to model only certain types of products. By providing an API, Inventor allows you to add additional functionality and optimize repetitive operations to make it more productive for your individual needs.
By providing an API, Inventor also provides you the ability to better integrate Inventor into your overall Enterprise process. For example, you might write a program that interfaces with your company's inventory database to obtain the current price for components so that the price shown in a part list is always up-to-date.
You might also write a program that extracts data from assemblies to provide MRP systems with their required information.
All of this can be done manually, but by automating it using a program you're able to significantly increase productivity and minimize errors. An API is also important for the reason that it allows third-party applications to integrate with Inventor. For example, Microsoft Word and Excel expose Automation interfaces to allow you to customize them.
They refer to them as ActiveX interfaces. There are some significant advantages to providing an API through an Automation interface. Second, if designed correctly, it exposes the functionality using standard concepts. This means that if you already have experience programming a well-designed Automation interface like Word or Excel, you already understand many of the concepts that are used by the Inventor API.
Finally, it exposes the application's functionality in an object-oriented manner. All of them are useful in certain cases, so it's important to have a basic understanding of the ways to connect to the API so you can make the best decision about how to write your program.
Getting Started with Inventor's API
The diagram below illustrates the different ways of accessing Inventor's API. A brief overview of each of the methods follows. First, a quick explanation of the figure below. The white boxes represent components that provide access to Inventor's API. These are Inventor and Apprentice Server. We'll talk about Apprentice more in a minute.
The blue cylinder at the bottom represents the Inventor data you're accessing, i. All of the yellow boxes represent programs that you write. When one box encloses another box this indicates that the enclosed box is running in the same process as the box enclosing it.We will parse the Title and Author of the book, we will get the image URL of the book cover, and finally the book URL which can be launched through a browser.
This is how our app would look like. First thing first, build your user interface UI in the Designer window. Mine looks like this. As you can see I renamed default names of components App Inventor provides. What matters is that you have all the essential components as shown in the UI screenshot above.
Have you tried executing a Book API query request yet? Click on the link below to see the API response. At the end we call Web. How do we know when the server returns a response to our query? Well, we use GotText block of Web component for this. Whenever our app receives something, GotText block will automatically wake up for us to validate and process the data. We have another procedure called ParseBookResult that actually parses the response. In the ParseBookResult procedure, we split the response content using the start tag and end tag.
For an example, to parse title of the book, we need to know the beginning and the ending tags of a title. If you have noticed in the query, it returns. When a user taps on the Read button, we simply launch the browser with the book URL. For launching a browser, we use ActivityStarter component. We set the action first. You can see a list of actions in this page.
We also set the URL we retrieved. Download the source file of this app iRead.One of the ways one can add considerable value to an MIT App Inventor application is to include one or more Google maps, whether those maps be roadmaps, traffic maps, or Google street views.
A straightforward example below uses the ActivityStarter in App Inventor to launch Google Maps within a browser on the device, and include search terms for the map that are input from a text box on that screen:. Parameters to a static map can include things like:. However, late in Google has made a change that requires developers to create a Google billing account — with a valid credit card — in order to use any of its public APIs.
The intent appears to be that eventually the use of Google APIs from an application will be billed. In what follows I will outline the process for creating a billing account and setting up a maps API for use in an App Inventor application. Note that the billing account is tied to a projectwhich is directly tied to your Google account, so sharing the billing account across multiple Google accounts is impossible.
Based on the millions of users using our APIs today, most of them can continue to use Google Maps Platform for free with this credit. Google uses the key as the mechanism to link your map API call to your Google Cloud project, so that Google can track the usage of your app and, eventually, bill your billing account for accessing the API.
The signature parameter is, essentially, a hash of all of the parameters used in the API call, and hence is only useful if the URL to the maps API is entirely static and will not change during the execution of your application.
Simply omit the generation and usage of the signature parameter in the maps API URL, and you can avoid these problems entirely. One nice feature of App Inventor maps is the ability to create labels on map pins with both a title and a description, which can be customized with respect to colour and typeface. Your email address will not be published. Data, data everywhere. Parameters to a static map can include things like: latitude and longitude of the map center; scale of the map; type of graphics file returned JPEG, PNG, etc ; map pins, along with pin labels and colours; and the type of map desired: roadmap, satellite, hybrid, and terrain.
Leave a comment Cancel reply Your email address will not be published.Note: Google was modernizing OAuth interactions in Native Apps for Better Usability and Securitywhich means, this solution to receive an access token via webview unfortunately does not work anymore starting from April 20, Currently there is no workaround available Someone will have to write a Contacts extension With App Inventor unfortunately you can't get this information directly, but if the contacts are synchronised with Google, you can use the Google Contacts API to get it!
Contacts are stored in the user's Google Account. The demo app downloads contacts of the current user and creates 2 lists: a phone number list and a contact name list. Now we can search for a phone number to get the corresponding contact name or search for a contact to get the corresponding phone number. IssueIssue and Issue are no issues anymore! On first run of the app, the user must authorize the app to be able to download the contacts from Google.
Then use these blocks for the further basic steps of the OAuth process. Normally the data is provided in XML format. Normally only 25 contacts will be provided. Therefore I set the max-results parameter to to be able to download contacts. Each item of listContact looks like this:.
Note: In the example, I stored only the first phone number found for a contact. The following blocks create 2 lists, a name list and a phone number list. Now it's easy to search for a phone number or a contact.
As you can see, this is a nice example to demonstrate how to work with list of lists Searching for a phone number or a contact name.
I did not take a look into creatingupdating or deleting a contact, but most probably this is also possible using this interface with App Inventor. Q1 : How can I delete a contact?
First you need the id to be able to delete a contact. From the example above the id is this string: 1bfe5b90e3ba The id is the last item in that list. Q2 : How can I add a contact? Your screenshot looks line. However instead of the empty string you should send a xml format to the API.
Just use the join block to build it. An example xml format is the following:. Portions of this page are modifications based on work created and shared by Google and used according to terms described in the Creative Commons 3. Android is a trademark of Google Inc. In the forum there are questions like these: I have a contact name. How to get the corresponding phone number? How to get the corresponding contact name? Screen1 Screenshots On first run of the app, the user must authorize the app to be able to download the contacts from Google.
For questions about App Inventor, please ask in the App Inventor community. Thank you.Often, the service you write will just serve as a proxy and call some other existing data service e. In this tutorial we shall create a small app that allows us to store a result, and recall what we stored.
Add the following components:.
Passing in the same tag as we used to store the value, so we can use it if we want to identify which StoreValue is related to which GetValue. Basically, this simply builds up a string called theText that is ultimately set to be displayed via Label1. The guts of this is a while loop while there is still data to be read items in the listget each one out, and add it to theText.Develop Android app without Coding Using App Inventor -Google Sheet - APP SCRIPT
So as you can see, strings in quotes. Numbers not in quotes. Be careful of Gotchas!! A couple of things that stumped me during this:. It makes debugging a lot easier. The world is open to pull data into App Inventor. All you need is to format it as a valid JSON string as shown in the examples above. Is this correct?
Using Google map APIs from MIT App Inventor
If this is correct you have just solved a HUGE problem for me that I have been looking for a solution to since I first got on appInventor. Have fun. Can you expland what it means! Basically, the problem will be that your PHP is failing, for one reason or another.
Here are a few pointers that I hope help. All of this is in a browser, and not in App Inventor: 1. Then I reintroduce a bit of code at a time and echo out variables etc and keep refreshing the browser page and keep repeating this until I find out what is breaking it, then fix it. Thanks for your reply, but I use an asp page, and as you write it should be the same. I have try to call an empty page whit the same result.?? Are tinywebdb using port 80?
Are you trying to call an empty page in the browser or through App Inventor? I think an empty page back to App Inventor would cause the same thing as its invalid return data.
The key is to make sure the returned data is a valid JSON string like those above. Is your ASP page when called in a browser returning the same looking data as if you call my page in a browser, as per the examples? My ASP is not that strong.
Try running my page in a browser, copy the output and have an ASP page that just returns that and nothing else. See if that works. Please keep me posted. With this working I could better understand what is going on. A number is entered into the input box, and when submit is pressed the result of the number entered multiplied by 9 is displayed back. But, I want the calculation done in a PHP script, not in the app. Hi, It can be frustrating.
Hang in there. So, a couple of questions. I presume test1 and test2 both run if they point to my servers.