Developing for Android
Erik Nykl
Developing for Android
• History of Mobile• Why Android?• Mobile Development Process• Writing Code!– Android API (Google’s Java library)• Use Hardware
– Embedded Java & Code Efficiency
Mobile History
• Motorola DynaTAC 8000X– Released in 1983– First mobile phone– 30 minute talk time– Cost only $4000
• Rudy Krolopp– Lead Designer
Picture:http://msnbcmedia4.msn.com/j/msnbc/Components/Photos/050408/050408_motorola_firstphone_vmed4p.grid-4x2.jpg
Mobile History
• First PDA: Apple Newton released in 1993 (original iPad)
• Hand writing recognition• Only three applications– Notes– Names– Dates
• Product was a big flop
Picture:http://upload.wikimedia.org/wikipedia/commons/thumb/2/24/Apple_Newton.jpg/368px-Apple_Newton.jpg
Mobile History
• 2000 – Nokia/Ericsson releases Symbian OS• 2001 – Microsoft announces Windows CE
Pocket PC OS• 2002 – Palm OS Treo– Allowed third-party applications that could be
downloaded• 2002 – RIM releases first BlackBerry
Mobile History• 2007 – A major year in mobile– Early 2007 - Nokia N95
• First phone with WiFi, GPS, 5 MP camera, 3G, and TV-Out
– Mid 2007 – Apple iPhone• First multi-touch interface for smart phone• Best mobile web browser at the time• No OFFICIAL support for third party apps• iOS 1.0
– November 2007 – Open Handset Alliance• OHA was formed • Android – An open source operating system built on the 2.6
Linux Kernel was released
Developing for Android
• History of Mobile• Why Android?• Mobile Development Process• Writing Code!– Android API (Google’s Java library)• Use Hardware
– Embedded Java & Code Efficiency
Why Android?
• Android is the fastest growing mobile operating system– In the Summer 2010 nearly 200,000 Android devices activated
each day
• Android has the fastest growing App Store (Android Market)
• Android WILL be the dominant smart phone OS– Open source and freer application development– Open platform - hardware manufacturers can do whatever they want
and competition has decreased hardware dev cycle (down to 6 months; Apple has yearly releases)
• http://www.gartner.com/it/page.jsp?id=1543014• http://www.canalys.com/pr/2011/r2011013.html
Why Android?• Apple has first “successful” App Store• Development is done in Objective-C– IDE: XCode
• Apple requires $99 to develop for the iPhone• Apple screens each App and can remove an App
from the store at any time for any reason– “Guilty until proven innocent”
• Apple can also blacklist your name and account• Apple takes 30% of each sale• Development pretty much requires a Mac
Why Android?• Android’s App Store: Android Market• Development done in Java– IDE: Preferred Eclipse, Netbeans, …, or none– Totally supportive for multiplatform development
• $25 developer signup fee• Unfortunately also take 30% of sale price• Relies on users to screen apps– “Innocent until proven guilty”
• Open hardware platform
Developing for Android
• History of Mobile• Why Android?• Mobile Development Process• Writing Code!– Android API (Google’s Java library)• Use Hardware
– Embedded Java & Code Efficiency
Mobile Software Process
• How can we develop for mobile applications?• Will traditional development methods work?– Waterfall, RAD, Spiral, Incremental
• How about Agile?• Mobile App Requirements– Shall be easy to use– Shall be responsive (OS & User)– Shall be delivered quickly to market
Mobile Software Process
• Mobile applications have a larger domain than desktop based applications– Not just a number crunching app– Informational Services– Content-based services– Location-based services
Mobile Software Process• New challenges for developers– Wireless communication issues
• Switching from 3G to WiFi and back to 3G
– Mobility issues• Location dependent app looses GPS signal
– Portability• New OS every year with updates every 3-6 months• Dozens of different hardware setups
– New hardware every 6 months
– Privacy• Phone knows much more about you than your credit
card information
Mobile Software Process
• A Hybrid Method Engineering Approach for Mobile Software Development– Vahid Rahimian, Raman Ramsin
• Developed using a process for making processes (Method Engineering)
Developing for Android
• History of Mobile• Why Android?• Mobile Development Process• Writing Code!– Android API (Google’s Java library)• Use Hardware
– Embedded Java & Code Efficiency
Writing Code!• Finally, coding!• Almost
Writing Code!
• Some fundamentals
• http://developer.android.com/guide/topics/fundamentals.html
Writing Code!
• So what all do we need?– Android SDK– Netbeans with Android plugin– Probably want some Android hardware– Don’t necessarily have to get a developer account
quite yet
Writing Code!
• AndroidManifest.xml– Every application MUST have this file in the root
directory (don’t worry, usually created for you)– Describes what stuff the app will use– Libraries, minimum API level, declares which
permissions the app needs
– http://developer.android.com/guide/topics/manifest/manifest-intro.html
Writing Code!
• It IS Java right?– Yes, basically. Close enough at least.– Dalvik is the custom JVM for Android– Written by Dan Bornstein originally– Named after a village in Eyjafjörður, Iceland where
some of his ancestors lived– Uses its own byte code (not Java byte code)– Uses its own library (no AWT or Swing)– As of Android 2.2 a JIT Compilier was added
(speed increases of up to 450%!)
Writing Code!
• Good Practice– If something is going to take a long time spawn a
thread!• http://developer.android.com/guide/practices/design/responsiveness.html
Developing for Android
• History of Mobile• Why Android?• Mobile Development Process• Writing Code!– Android API (Google’s Java library)• Use Hardware
– Embedded Java & Code Efficiency
Hardware
• http://developer.android.com/reference/android/hardware/Sensor.html
• http://developer.android.com/reference/android/hardware/SensorManager.html
• Accelerometer examplehttp://www.anddev.org/accessing_the_accelerometer-t499.html
Developing for Android
• History of Mobile• Why Android?• Mobile Development Process• Writing Code!– Android API (Google’s Java library)• Use Hardware
– Embedded Java & Code Efficiency
Embedded Java and Code Efficiency
• You are coding in an embedded environment!– Limited memory, disk space, battery length, and
limited CPU power
• http://developer.android.com/guide/practices/design/performance.html
Development Resources
• http://www.anddev.org/• http://developer.android.com/
References• http://developer.android.com/guide/index.html• Book: Beginning Android 2; Mark L. Murphy• http://www.anddev.org/ • Rahimian, V.; Ramsin, R.; , "Designing an agile methodology for mobile software
development: A hybrid method engineering approach," Research Challenges in Information Science, 2008. RCIS 2008. Second International Conference on , vol., no., pp.337-342, 3-6 June 2008doi: 10.1109/RCIS.2008.4632123URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4632123&isnumber=4632084