Mobile Applications Assumption: We have an idea for a hot new mobile application General Considerations • Industry is in a state of competitive flux not seen since the days when mini-computer manufacturers first flooded the market – There is now open source, but there are also lots of proprietary secrets – Standards are evolving rapidly • Prediction: there will be winners and losers • Based on history: Winners will not likely produce the best products – Superior marketing strategies gain traction quickly Example: Microsoft versus Apple in the 1980s – Getting to the public to fill a need before standards are established Example: Early browser war between Netscape and Explorer • Bottom line: Development is expensive; mistakes can be disastrous Hardware Specifications • Display Sizes – Laptop/Desktops: 15”, 17”, 19”, 21”, etc. – Phones: 1½” , 2.3”, 3”, 4” – Tablets: 7”, 8”, 10.1”, etc. • Mobile Device Resolution – Low end: 128x128 – Mid end: 240x360 – High end: 320x480, 1024x768, 1200x800, etc. • • • • Operating Systems: Android, WebOS, Windows 8, iOS, Blackberry Manufacturers: Apple, Nokia, RIM, Samsung, Sony, Motorola, LG, HTC Memory: 256MB – 1GB; Storage: 1GB-32 GB Processor Speed: 500 mhz – 1 ghz Tablet Market Share Note: The Android market is fragmented among dozens of manufacturers Pixels and Aspect Ratio • Pixels per inch (ppi), or dots per inch (dpi) – High resolution may mean that you need a magnifier glass to read text – The retina has a limit of 300 ppi – Zooming in and out may be necessary • Aspect ratio – Width to height ratio differs between devices – When turning the device, the aspect may change • Does the device automatically zoom to fit? • Does the device adjust the font to accommodate? • Key Entry Features – Virtual or physical keyboard – Numeric or alphanumeric entry – External keyboard attachment • Interacting with applications – Touch or multi-touch – Handwriting and/or voice recognition • Geo-location • Facial and gesture recognition • Connections: Phone, web, texting, email Best Practices • • • • • • • • • • Handle unavailable or lost network connection Limit permissions requested as much as possible Optimal use of storage. Use the SD card if possible Use standard GUI layouts Efficient, fast, responsive Multi thread slow time consuming operations Save application data when state changes occur Share data with apps by implementing content providers Implement activities launchable from other apps Utilize notification facilities, progress bars, flash screens Design Considerations • • • • • • • • • • Orientation changes Varied screen sizes and resolutions Operating system choice to reach a wide audience Intuitive operation Reason for continued use Well-defined purpose Multi user support Upgrades/new features (without feature creep) Multiple language and color support Varied font sizes Getting the product to market • Register for an Android Market account: market.android.com/publish/ • Click: Setup Merchant Account to set up a Google Checkout • Adhere to Android application policy requirements (www.android.com/market/terms/developer-content-policy.html) • Digitally sign (can be self-signed) and upload to the Android market (see developer.android.com/guide/publishing/publishing.htm) • Price the application – – – – The average paid app price is $3.13 – 30% for Google; 57% are free. In app advertising price per view virtual products (Google retains 5%) Limited free version, with paid version having full capabilities • Market: social media, app review sites, advertising networks, etc.. Browsers • Preinstalled – NetFront , Myriad, Explorer, Safari, Nokia, Sony, Obijo, Motorola, Symbian, Android, webOS, Blackberry, Samsung, MicroB • User-installed – Opera Mobile, Opera Mini, Firefox (Fennec) for Mobile, Chromium, UC, SkyFire, Bolt • Webkit – Open source framework used by many browsers Questions to Ask? • On which device(s) will our application run? • Should it run in a browser or as a native application? • Which language(s) should we use? – HTML5/JavaScript, Objective C, Java ME, Flash, Silverlight, C#, Dalvik VM, Java FX • Which cross-platform development framework should we use? Do they have their own API to learn? • If JavaScript, which JavaScript libraries should we incorporate? • How do we develop/debug? – Which emulators/simulators are available? – What development toolkits do we use? This Class • Part 1: HTML5/JavaScript. Why? – JavaScript supported on all popular smart phone and tablet devices – The popular browsers have good debugging facilities – There are extensive JavaScript frameworks and libraries that attempt to facilitate application development and provide cross-platform compatibility – There are toolkits to translate from HTML5/JavaScript to native applications – Smaller learning curve for cross-platform development – Industry is moving in this direction (at least at the moment) • Part 2: Native Applications on Android. Why? – – – – – Android is rapidly gaining market share The Eclipse JDK/Android emulator provides good development tools Android’s Java is not too difficult to learn and use Familiarization with at least one mobile development platform is beneficial HTML5/JavaScript must be tested/debugged on every possible browser Popular JavaScript libraries/Frameworks • Google We Toolkit - GWT (http://code.google.com/webtoolkit) Free toolkit, used by thousands of developers for complex web applications. Code in Java; deploy in JavaScript • jQuery (http://jquery.com/) : JavaScript library that simplifies HTML document traversing, event handling, animating, and Ajax interactions • Prototype (http://www.prototypejs.org/) and script.aculo.us (http://script.aculo.us/): Easy to use class-driven JavaScript framework that aims to ease development of dynamic web applications • YUI (http://developer.yahoo.com/yui/ ): JavaScript and CSS utilities and controls for richly interactive web applications. Built by Yahoo • Dojo (http://dojotoolkit.org): A toolkit, focusing on performance, for building desktop and mobile web experiences • MooTools (http://www.mootools.net/): Object-Oriented JavaScript cross-browser framework for intermediate to advanced JavaScript developers Mobile Frameworks • jQuery based o jQuery Mobile (http://jquerymobile.com/): a Touch-Optimized Web Framework for Smart phones & Tablets. o jQTouch (http://jqtouch.com/): jQuery plug-in that provides a native UI feel to iPhone-based web apps. o M-Project (http://the-m-project.net/): framework to build mobile apps using HTML5 JavaScript, and JQuery that run on the iPhone, Android devices and many others. • Sencha and Sencha Touch (http://www.sencha.com/): mobile builder for apps that feel native on iPhone, Android, and Blackberry, and other touch devices • Titanium (http://www.appcelerator.com/products/ ): JavaScript interface that translates into mobile applications, which will perform just as if you had written them in Objective-C or Java. Mobile Frameworks (cont.) • Phonegap (http://phonegap.com/) : Platform allowing native application development in HTML/JavaScript for APIs and app store access • Appmobi (http://www.appmobi.com/): Cross platform JavaScript bridge that allows apps access to device APIs on iOS and Android platforms • NimbleKit (http://nimblekit.com ): Framework that allows development for Apple iOS devices using HTML and JavaScript • XUI (http://xuijs.com/) Micro DOM library for HTML5 mobile web applications. Compatible with WebKit-based mobile browsers • WebApp (http://webapp-net.com) light weight JavaScript framework with a full set components for advanced mobile applications. • iUI (http://code.google.com/p/iui): JavaScript library, CSS, and images for advanced mobile web apps • YUI (http://yuilibrary.com/) Yahoo developed framework with a large user base developing interactive Web applications. JavaScript and other tools • Leading edge JavaScript Features – – – – Record, detect orientation, device vibration, sense gestures, etc. ARIA standards: Accessible rich internet application Transform features Drag and Drop • HTML templates (https://github.com/janl/mustache.js/) for eliminating embedded HTML in JavaScript • CSS Reset (http://www.cssreset.com/) – Initialize presentation parameters for cross browser compatibility • NodeJs (http://nodejs.org/): Server side JavaScript First Presentation Topics 1. One of the top five JavaScript libraries. Research how it works and how it is applicable to mobile development. 2. One of the JavaScript frameworks. Research how it works, the development environment, and how it is applicable to mobile development Requirements 1. Clear description including an overview plus examples. 2. Short demo of a program using the technology 3. Audience: Understand computer terminology, html, and JavaScript but not this particular topic 4. Turn in your PowerPoint slides and a five to eight page well-written summary of the topic 5. Each team member must participate in the presentation