Introduction to Mobile Computing An Overview of Mobile Devices and Developing Mobile Applications Dr. Frank McCown Harding University Spring 2010 Types of Mobile Devices • • • • • Handheld devices Handheld computers Personal Digital Assistants Palmtops Smartphones Pocket PC Phone http://en.wikipedia.org/wiki/Windows_Mobile http://en.wikipedia.org/wiki/Image:Modern_Pocket_PC.png Blackberry Storm iPhone http://en.wikipedia.org/wiki/File:Blackberry_Storm.JPG http://www.mobileafrica.net/images/apple-iphone.jpg Motorola DROID Archos 5 Internet Tablet http://techplore.com/technology/wp-content/uploads/2009/10/archos-5-internet-tablet_1.jpg http://homebiss.blogspot.com/2009/11/motorola-droid-iphone-3gs.html Google Nexus One • Retail: $530 • Not tied to single provider • 3.7-inch 800 x 400-pixel OLED screen • No support for multitouch • 512 MB of built-in flash memory •Preloaded 4 GB SD card •Ubiquitous voice recognition • 5-megapixel camera with zoom and flash • Navigation system using Google Maps and GPS http://www.wired.com/reviews/product/pr_nexus_one http://www.appleinsider.com/articles/09/08/21/canalys_iphone_outsold_all_windows_mobile_phones_in_q2_2009.html Mobile Devices – The Good • • • • Always with the user Typically GPS capable Typically have accelerometer Many apps are free or low-cost Mobile Devices – The Not-So-Good • • • • • Limited screen size and colors Limited battery life Limited processor speed Limited and slow network access Limited or awkward input: soft keyboard, phone keypad, touch screen, or stylus • Limited web browser functionality • Often inconsistent platforms across devices • Warning: Blackberry thumb Mobile Applications • What are they? – Any application that runs on a mobile device • Types – Web apps: run in a web browser • HTML, JavaScript, Flash, server-side components, etc. – Native: compiled binaries for the device Native App Development Environments • Java ME • .NET Compact Framework (C++, C#, VB.NET) for Windows Mobile • Qualcomm’s BREW (C or C++) • Symbian (C++) • BlackBerry (Java) • Android (Java) • iPhone (Objective-C) • Is having so many choices a good thing? Development Environments • Most platforms have an SDK that you can download and build against • Every platform has an emulator that you can use to test your apps • Most emulators are configurable to match a variety of mobile devices – Various screen sizes, memory limitations, etc. xCode IDE & iPhone Emulator http://developer.apple.com/iphone/library/referencelibrary/GettingStarted/Creating_an_iPhone_App/index.html Eclipse and Android Emulator