Implementing an “Array” in App Inventor

What is an “Array”?

An array is a variable data type that stores a collection of values referenced by an index number.

For example, suppose we wished to store the names of the 12 months of the year: January, February, March, … , November, December so we can convert a month number to a text name. Month 1 converts to “January”, Month 2 converts to “February” and Month 12 converts to “December”.

An easy way to do this conversion is to set up an array that, in concept, looks something like this:

Month[1] = “January”
Month[2] = “February”
Month[3] = “March”
Month[4] = “April”
Month[5] = “May”
Month[6] = “June”
Month[7] = “July”
Month[8] = “August”
Month[9] = “September”
Month[10] = “October”
Month[11] = “November”
Month[12] = “December”

Month is the name of this variable – but unlike other variables, this one stores 12 separate values. Each value is referenced by using an index – if the index value is 2, then Month[index] refers to “February”.

If we have a date, such as (US-style) – 2/14/15, meaning February 15, 2015, we can convert the month number of 2, into the text month name by referencing Month[2].

If you have studied algebra math or beyond, you have encountered array variables such as X1, X2, X3, … Xn where the value Xi is read as “X subscript i”. This is the same concept as an array of values. If you have not studied algebra, this notation may be new to you. 

Most programming languages support an array variable type but App Inventor does not support arrays. Yet arrays are a convenient way of storing and working with some types of data. To support an array-like variable in App Inventor, we can use a list and map the array subscript to an index position in the list.  By hiding this within a couple of procedures, we can simulate the array variable type.

Sample User Interface

I created a simple app to demonstrate the use and implementation of the array. You can download this app from the MIT App Inventor Gallery here.

Continue reading

Advertisements

MIT begins testing “App Inventor Extension Components”

MIT has begun testing a new App Inventor feature that will enable developers to create their own “extension components”. Extension components are written in Java. Once created and tested, these new components may be shared with other App Inventor developers for use in programs.

What this means: if App Inventor lacks a feature or capability, then a Java developer familiar with App Inventor and its components software development kit will be able to add new features to App Inventor. Over time, the capabilities and power of App Inventor are likely to grow enormously – and rapidly. The ability to extend App Inventor’s features/components is an exciting and tremendously important development for the future of App Inventor!

For now, this feature is in “test mode”.

Source: App Inventor Extension Components available for testing | Explore MIT App Inventor

Is there a good way to print App Inventor blocks code?

I do not think there is any good way to make print outs of the App Inventor blocks code.

What I do is:

In Windows 7 (also works in Vista and newer version) is to use the Snipping Tool to select a section of blocks code on screen, copy the selection, and then paste that into a Word document. I make several “snips” as needed, to capture all of the code, and paste each into the document. Then I print out the document.

Is there a better way? I do not know but if you have a better solution, let us know in the comments! Thanks!

App Inventor Stores Numbers as “Floating Point” Format

When you type a number, such as “123”, computers convert the text values of “123” into an internal representation used by the computer. There are many possible ways that numbers can be represented inside a computer. For example, the computer could:

  • keep numbers in their original text format “123” (decimal format)
  • convert them into a binary representation (binary integers)
  • a “floating point” representation (floating point or “float” format)
  • or even a “binary coded decimal” (BCD) representation.

Each internal format has benefits and drawbacks, depending on the application. Most computers (and programming systems) convert entered numbers from their original text format into either integer format or floating-point number format.

App Inventor converts values to floating point format. Which is fine, except that you will encounter some odd and subtle issues. As the link below notes, in App Inventor arithmetic, 0.3 + 0.6 does not equal 0.9!

Continue reading

Google to end support of Eclipse for Android s/w development

I posted the following on my App Inventor Facebook page – only a fraction of readers use the FB page so I am cross posting back over this blog. Usually I post items on the blog first, and then those end up on FB.

If you would like to follow the Facebook page, click here and then click on Like and also select “Get Notifications”.


Google will end support for Android Software development using the Eclipse Integrated Development Environment as they migrate development over to Google’s own Android Studio.

See here for details: http://www.androidcentral.com/google-stop-development-and-support-android-developer-tools-eclipse

This does NOT impact MIT App Inventor coders!

Eclipse and Android Studio are used for developing Android apps written in the Java programming language, and relying on the Android Software Development Kit of libraries of code. These tools are used to develop most Android apps as they are capable of using all of the features provided by Android, while MIT App Inventor limits us to a subset.

I just spent several days getting Android Studio up and running and reconfiguring an old project so that it now builds entirely in Android Studio. That Eclipse will be going away was sort of obvious.

———-

I have completed all of the text for my next App Inventor e-book. However, once I finished, I decided to add even more! I am hard at work on one more chapter! I think a lot of people are going to love Volume 3 and I cannot wait to share it with you! However, its the middle of summer and my wife would like us to take an actual vacation so I need to work hard on my vacation skills for a few days before I can wrap up the book!

I hope to share a lot more with you in very early August.

New App Inventor 2 “Companion” app released today; new features

Changes between nb143i and nb144 (June 30, 2015)

  • When a component is renamed in the designer, any related collapsed blocks will be properly renamed now.
  • Screen1 now has properties that permit you to hide both the top “Status” and “Title” Bars
  • The selected item in a ListView is now highlighted
  • Activity Starter component now has a “Activity Canceled” event
  • Fix to the Player Component so it doesn’t spontaneously start playing after a phone call or other interruption
  • Bugfix to Image Sprite rotation which had left screen artifacts on some devices
  • Add Math blocks to convert between decimal, Hexidecimal and Binary representation
  • Clock Component now permits you to format a date or time arbitrarily. You provide a “format string”
  • You can now have both a Background Image and a Background Color and the “right thing” happens
  • TextToSpeech: The designer now uses dropdown menus to select Country and Language. Added blocks to fetch the supports countries and languages on a given device

Source: Release Notes for MIT App Inventor 2 (Beta)

App Inventor 2 Tutorial Volume 2 is now available at Amazon

//ws-na.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&OneJS=1&Operation=GetAdHtml&MarketPlace=US&source=ss&ref=ss_til&ad_type=product_link&tracking_id=commonsensevi-20&marketplace=amazon&region=US&placement=B010ITAXYU&asins=B010ITAXYU&linkId=FBOQVBR2G3ERYS66&show_border=true&link_opens_in_new_window=true

Volume 2 of the App Inventor 2 Tutorial is now available at Amazon as an e-book via this link: App Inventor 2 Tutorial Volume 2: Step-by-step: Advanced features including TinyDB.  The e-book will also be available from Google Play shortly.

Description

MIT App Inventor 2 is a fast and simple way to create custom Android apps for smart phones or tablets. Volume 2 in the series introduces debugging methods, explains additional controls not covered in Volume 1, introduces “agile” methods for developing a real world app, and provides sample code for using the TinyDB database.

The App Inventor 2 Tutorial series is targeted at adult learners (high school and up). App Inventor 2 provides a simplified “drag and drop” interface to layout your app’s screen design. Then implement the app’s behavior with “drag and drop” programming blocks to quickly assemble a program in a graphical interface.

Volume 1 of this series covered the basics of the App Inventor user interface Designer and the Blocks programming editor, plus basic “blocks” programming concepts and tools for arithmetic, text processing, event handling, lists and other features. Volume 2 builds upon Volume 1 to provide tips on debugging programs when the apps work incorrectly, how to use hidden editing features, and how to install your own apps on to your phone or tablet for general use. Code samples are provided for using the Notifier component for general use or for debugging, for user interface control tricks such as buttons that change color continuously or implementing the missing “radio buttons” component, using ListPicker and Spinner for list selections, and using the WebViewer to display web pages in your app. The book includes a large section on designing and building a sample real world application and finishes with a chapter on using the TinyDB database.

For readers of the blog, Chapters 4–8 are based on the tutorial already presented here. Chapter 2 and Chapter 9 on TinyDB are all new material.

Chapters

  • Introduction
  • Chapter 1 – App Inventor Tips
  • Chapter 2 – Debugging App Inventor Programs
  • Chapter 3 – User Interface Control Tricks
  • Chapter 4 – Designing and Building a Real World Application
  • Chapter 5 – Tip Calculator Version 2
  • Chapter 6 – Tip Calculator Version 3
  • Chapter 7 – Tip Calculator Version 4
  • Chapter 8 – Tip Calculator Version 5
  • Chapter 9 – Using the TinyDB database

(Volume 3 is now available – App Inventor 2 Databases and Files adds substantially more information on TinyDB, plus TinyWebDB and Fusion Tables and includes the full introduction to TinyDB).

AppInventor_Volume2Cover

App Inventor 2 Tutorial volume 2 will be available in a few days

Volume 2 of the App Inventor 2 Tutorial will be available at Amazon and Google Play/Google books within a few days. Just waiting for the new title to clear through their review process.

AppInventor_Volume2Cover

“Visual Development” system for Arduino

As you know, MIT App Inventor is a graphical-based programming system, or a “visual development” system where programs are constructed by dragging and dropping “blocks” onto a Blocks editor.

Arduino, which we mentioned in conjunction with our Bluetooth interface code, is a microcontroller system that is normally programmed in a language similar to the C++ programming language – which is text-based.

Mitov Softwware has introduced a new visual programming system for Arduino. I have not yet had a chance to try this out – the software is in “Beta” test phase and is not yet generally available.

The simplicity of an App Inventor type programming environment might then be available for Arduino applications. This is very exciting. It may be helpful for enabling more kinds of people, with different types of backgrounds than software developers(!) to write code for Arduino boards.

Program Arduino boards visually, fast and easy with Visuino #Visuino #Arduino

Source: Visuino – Visual Development for Arduino by Mitov Software

I have used this screen shot from their web site to illustrate the general idea – really looking forward to trying this out!

screenshot-03

MIT App Inventor usage triples during 2014-2015 school year

Source: MIT App Inventor usage for 2014-2015 Academic Year

As they point out, the cyclical ups and downs in usage suggest App Inventor is primarily used by students – with drop off in usage during school vacation periods.

That suggests an opportunity to expand usage of MIT App Inventor – by insuring that AI2 appeals to a wide audience of potential app developers and not just educational programs!