Intro

What is Mobile Computing?

According to Wikipedia:

"Mobile computing is human-computer interaction by which a computer is expected to be transported during normal usage."

Mobile Operating Systems are designed specifically for use on mobile devices such a smartphones, tablets, PDA, etc.

Why is it important that we study mobile devices?

The growing infiltration of mobile devices into our daily (for some, hourly) lives is the simplest indicator of their impact on modern society.  As the number of mobile devices continues to grow, so does the necessity to ensure that our educational systems evolve in order to produce graduates with knowledge relevant to the world in which we live.

According to the Pew Research Center, as of Oct 2014:

(src: http://www.pewinternet.org/fact-sheets/mobile-technology-fact-sheet/)

Also, the types of devices we use (i.e. the way we interact with computers) is changing:

(src: Adult Gadget Ownership Over Time)

Major Mobile Operating Systems

(src: http://www.idc.com/prodserv/smartphone-os-market-share.jsp)

Android:

iOS:

Blackberry OS:

Windows Phone:

This course will explore the development of software for mobile operating systems using the Android platform.

Why Android?

 

For you skeptics that still need more convincing that Android is the superior platform, check this out: Android, the world's most popular mobile platform

Android Flavors

One of the most vocalized criticisms about developing for Android is the need to account for many versions of the platform (aka 'fragmentation').  This is a valid concern, because as new versions of the operating system are published, new features become available that may or may not be backwards compatible.  At some point you may find that you have to make the hard decision between incorporating some new whiz-bang feature and providing backwards compatibility.  The choice is never easy.  

Here are the versions of Android:

For a complete history, see here: Android History

The API level is important because when building apps, you specify minimum and target API levels.  Your app cannot be installed on any device that has an OS version with an API level lower than the minimum you specify.  So how low do you go?  Where is the sweet spot in terms of determining how many devices you will support?  That depends on you, but in making your decision, it makes sense to have a look at the current install statistics (i.e. your user base).  

As of 4 January 2016, more than 94% of running Android devices are running API Level 16 (Jelly Bean) or higher.  (*source: http://developer.android.com/about/dashboards/index.html)

 

 

As if multiple versions of the operating system weren't enough fragmentation, there are also multiple screen sizes and display densities that you need to consider during development.  An app written for a smartphone may not look right on a tablet, or vice-versa.  For that reason, it's crucial that you test your apps on multiple devices before ever thinking about publishing. We'll discuss ways to account for different screen sizes when we get to Layouts.  

Conclusion

Developing for mobile devices using the Android operating system is highly rewarding, and can result in widespread usage.  However, with power comes responsibility.  Being an open ecosystem, you have plenty of options in terms of device support and OS functionality.  There's also a fairly steep learning curve as you become familiar with the organization of the system and the relationship of its many parts.  However, if you stick with it and give each lesson its due diligence, the end result will be a skill that you can take with you wherever you may go.