Climbing Mount Android

643 views

Published on

Android 101 - Getting to know the basics of Android for developers.

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
643
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Climbing Mount Android

  1. 1. Climbing Mount Android Dr. Rajesh Vasa, 2011 Twitter: @rvasa http://www.rvasa.com 1
  2. 2. Mobile Eco-System Content Providers (Music/Video/Books) Ad Networks App. Distribution Platform Billing Telephone Handset Cloud Networks OEMs Infrastructure 2 R. Vasa, 2011
  3. 3. Android Eco-System Content Providers (Music/Video/Books) Google, Amazon App. Ad Networks ** Distribution Google, Double Click Platform Google Checkout Android Billing Google, Amazon Telephone Handset Cloud Networks (OEMs) Infrastructure Samsung, HTC, Motorola, Sony ... 3 R. Vasa, 2011
  4. 4. Focus of this talk... Content Providers (Music/Video/Books) Google, Amazon App.Ad Networks ** Distribution Google, Double Click Android Google Checkout Platform Billing Google, Amazon Telephone Handset Cloud ThisNetworks talk will present a(OEMs) development perspective Infrastructure Samsung, HTC, Motorola, Sony ... 4 R. Vasa, 2011
  5. 5. Talk Overview • Devices • What is Android? • Development Tools • The Android Way • Anatomy of a Simple Android Application • An Interactive Android Application • Dealing with Multiple Activities • Activity Life Cycle (the odd thing) 5 R. Vasa, 2011
  6. 6. Roadmap - Where are we? • Devices • What is Android? • The Android Way • Anatomy of a Simple Android Application • An Interactive Android Application • Dealing with Multiple Activities • Activity Life Cycle (the odd thing) 6 R. Vasa, 2011
  7. 7. Android Device User Interaction Android devices have three key buttonsMenuBack Home 7 R. Vasa, 2011
  8. 8. Vendors can add additional buttons 8 R. Vasa, 2011
  9. 9. There are variations in physical form But all phones have Home, Menu, & Back Buttons 9 R. Vasa, 2011
  10. 10. Home Button... • Typically, this will take you back to the Home Screen of the phone • Default behaviour ~ iPhone / iPad button Home 10 R. Vasa, 2011
  11. 11. Back Button • This will take you back to the previous screen • If app. has only one screen, this will exit app. Personal Opinion: Back iPhone / iPad should borrow this button 11 R. Vasa, 2011
  12. 12. Menu Button • Shows a contextual menu (if one is available) • Developers can write their own menus • to low discoverability) Quite handy (but, causes Usability issues dueMenu (as open) 12 R. Vasa, 2011
  13. 13. Android for tablets is slightly different... Action Bar Where is the menu button?Back, Home(Buttons need not be physical in Android) 13 R. Vasa, 2011
  14. 14. Tablet Menu Icon Visibility is contextual Menu Sadly, menu position is not mandated (yuk?) 14 R. Vasa, 2011
  15. 15. Roadmap - Where are we? • Devices • What is Android? • Development Tools • The Android Way • Anatomy of a Simple Android Application • An Interactive Android Application • Dealing with Multiple Activities • Activity Life Cycle (the odd thing) 15 R. Vasa, 2011
  16. 16. What is Android? • Android is a platform • Operating System (with primitive API) • Frameworks (incl. components and libraries) Applications Frameworks Android API Operating System (Customised Linux Kernel) 16 R. Vasa, 2011
  17. 17. Android Programming languages: Java, C/C++ Image Source: http://developer.android.com 17 R. Vasa, 2011
  18. 18. Android is a bi-lingual platform C/C++ Java Image Source: http://www.tbray.org 18 R. Vasa, 2011
  19. 19. Most Android Code is in Java (but...) ≠ Android Java is not 100% Sun Java 19 R. Vasa, 2011
  20. 20. Android Java is differentNo RMI No Bytecode No AWT / Swing UI Different 2D/3D libs Different Class Load Mechanism 20 R. Vasa, 2011
  21. 21. Roadmap - Where are we? • Devices • What is Android? • Development Tools • The Android Way • Anatomy of a Simple Android Application • An Interactive Android Application • Dealing with Multiple Activities • Activity Life Cycle (the odd thing) 21 R. Vasa, 2011
  22. 22. Development Tools • Android SDK (Compiler and Emulator) • Eclipse IDE + Android Plug-in • Powerful debugger • Visual UI Builder • Ant (Build System) Download from http://developer.android.com 22 R. Vasa, 2011
  23. 23. Eclipse IDE 23 R. Vasa, 2011
  24. 24. Eclipse IDE - Graphical UI Editor 24 R. Vasa, 2011
  25. 25. Android Emulator Permits checking Portrait and Landscape views 25 R. Vasa, 2011
  26. 26. Emulator is nice .. but phone is better • The emulator runs the Android O/S (you can run any version: 1.6 upwards -- incl. tablet) • Emulates the phone hardware (like VM Ware) • Emulator does not have sensors (e.g. GPS, Gyro, Accelerometer, Cell phone etc.) • It offersevents methods to simulate some sensor primitive • Interesting factoid: Youphonesend an it to the emulator or make a can call to SMS 26 R. Vasa, 2011
  27. 27. Emulators Vs Simulator • iOS offers a simulator • Android has gone down the emulator path • Trade-offs (pros and cons), • Simulators start-up faster, good enough • Emulators allow closer to phone hardwareof the O/S easily + checking against rel. 2.1 • Emulators and Simulators cannot mimic real CPU speed, disk speed, network speed etc. (yet?) 27 R. Vasa, 2011
  28. 28. If your Java is rusty Free e-Book: http://www.mindview.net/Books/TIJ/ 28 R. Vasa, 2011
  29. 29. Roadmap - Where are we? • Devices • What is Android? • Development Tools •The Android Way • Anatomy of a Simple Android Application • An Interactive Android Application • Dealing with Multiple Activities • Activity Life Cycle (the odd thing) 29 R. Vasa, 2011
  30. 30. The Android Way Convention ConfigurationDevelopment is organised around a few conventions 30 R. Vasa, 2011
  31. 31. Android Project Structure (convention) •Source code (src) •Generated code (gen) •Resources (res) •Images (drawable) •Layout of app (layout) •Constants/Strings (values) 31 R. Vasa, 2011
  32. 32. Needs Resources @Multiple Resolutions Convention High Low Medium 32 R. Vasa, 2011
  33. 33. Roadmap - Where are we? • Devices • What is Android? • Development Tools • The Android Way • Anatomy of a Simple Android Application • An Interactive Android Application • Dealing with Multiple Screens (Activities) • Activity Life Cycle (interesting design choice) 33 R. Vasa, 2011
  34. 34. A Simple Android App. 34 R. Vasa, 2011
  35. 35. What is involved? • Place UI controls (Text and Image) • Layout the controls • Centre text • Make text large font • Display Image to take up all space 35 R. Vasa, 2011
  36. 36. Each Screen is an Activity • Android app. is made up of ActivitiesActivity 36 R. Vasa, 2011
  37. 37. Views are Android’s Key UI Building Block • We need two views on the ActivityTextViewImageView 37 R. Vasa, 2011
  38. 38. Views are Placed inside a View Group • Different types of pre-defined layouts • Linear, Relative, Table, Frame etc..View Group a.k.a Layout 38 R. Vasa, 2011
  39. 39. Android App. - Building Blocks Activity Layout Views (View Group) 39 R. Vasa, 2011
  40. 40. Separation of Concerns in Android Presentation Functionality Layout Definition Activity Class (main.xml) Event Handling, I/O ... 40 R. Vasa, 2011
  41. 41. UI (Layout) Definition • Layout definition is generally in an XML file • Hand coded or Visual Editor • Can be also be done in Java Code (yuk!) Layout Definition XML File 41 R. Vasa, 2011
  42. 42. Android Offers a number of UI Controls • Offers all standard controls and lot more... Progress These are a small subset of available controls 42 R. Vasa, 2011
  43. 43. View Groups (Layouts for us mortals) • Android offers the following View Groups, • Linear Layout (Horizontal or Vertical) • Absolute Layout (You set X, Y for each View) • Table Layout (Rows and Columns) • Relative Layout ( ) Position relative to other Views • Frame Layout (Show only one view at a time) • Scroll View (Permits scrolling of the screen) •View Groups can be nested 43 R. Vasa, 2011
  44. 44. Generated Code, Layout & Resources • How did Australia image get into the App.? • How did we set the text to “Australia”? • Conventions • Layout Defined in /layout/main.xml • Resources Placed in /res/drawable-* • String values defined in/values/strings.xml 44 R. Vasa, 2011
  45. 45. Resources Resources in “res” Convention 45 R. Vasa, 2011
  46. 46. Resources are given a unique ID A unique reference id to resources is generated by the Android SDK tools Convention 46 R. Vasa, 2011
  47. 47. Resources and Generated IDs Generated Code static final int australia=0x7f020000; 47 R. Vasa, 2011
  48. 48. A Reference to Layout also Generated All References are Integers 48 R. Vasa, 2011
  49. 49. Identifiers are used to access resources This is the Activity Class Reference to the layout (Android Runtime will Render this Layout) 49 R. Vasa, 2011
  50. 50. Layout is Referred to from Java Code Activity Activity Class (Java)View Group (Layout) Layout Definition (main.xml) 50 R. Vasa, 2011
  51. 51. Who writes the Activity code? This block of code is created by IDE/SDK when we create new Android project You can also write you own 51 R. Vasa, 2011
  52. 52. Activity Creation Method called (by Application Launcher) when App is first launched 52 R. Vasa, 2011
  53. 53. Activity Creation - Layout Rendering Method call will pass the reference to the layout that needs to be rendered on the screen (“Rendering” is a two-pass process: measure and draw) 53 R. Vasa, 2011
  54. 54. What is the “root” Activity? • How does Android know which Activity to create first? Answer: Application Manifest File 54 R. Vasa, 2011
  55. 55. Application Manifest File Application Icon Reference Activity Name Category 55 R. Vasa, 2011
  56. 56. Application Manifest File Category indicates that it can be launched 56 R. Vasa, 2011
  57. 57. Application Manifest FileMain action indicates that it is the starting point 57 R. Vasa, 2011
  58. 58. Layouts and String Information • How did we set the text to “Australia” String constant 58 R. Vasa, 2011
  59. 59. Using Graphical Resources • How did the Australia image get into layout? Layout can refer to resources @drawable is a special tag 59 R. Vasa, 2011
  60. 60. What is it with the @ tag? • Constant Resources in Android can be referred using the “@” tag in XML layout • Example: @drawable, @string ... @drawable/australia @drawable/bots 60 R. Vasa, 2011
  61. 61. @ Tag and Multiple Screen Resolutions • Dealing with multiple screen resolutions @drawable/iconAndroid Runtime decides best resource to use based on hardware capabilities R. Vasa, 2011
  62. 62. Significance of hdpi/ldpi/mdpi Different resolution images High-Res, 240 dpi screen Low-Res, 120 dpi screen Med-Res, 160 dpi screen 62 R. Vasa, 2011
  63. 63. Roadmap - Where are we? • Devices • What is Android? • Development Tools • The Android Way • Anatomy of a Simple Android Application • An Interactive Android Application • Dealing with Multiple Screens (Activities) • Life Cycle & interesting design choices 63 R. Vasa, 2011
  64. 64. Building an App with Simple Interaction • Temperature Conversion (C -> F) 64 R. Vasa, 2011
  65. 65. ViewsTextView EditText Button TextView 4 Views (UI components) using a Linear Layout 65 R. Vasa, 2011
  66. 66. Linear Layout (View Group) main.xml (Layout) 66 R. Vasa, 2011
  67. 67. View Identifiers • We need a way to identify components that we created in the layout • E.g. To read input data from the field @+id TAG creates new identifiers 67 R. Vasa, 2011
  68. 68. UI Interaction Handling Pattern • Component.setOn......Listener ( handler ) • E.g. button.setOnClickListener • Handler is an anonymous inner class • On...Listener handler = new On....Listener() {} 68 R. Vasa, 2011
  69. 69. UI Interaction Handling PatternThe View identifiersare defined in XML 69 R. Vasa, 2011
  70. 70. Roadmap - Where are we? • Devices • What is Android? • Development Tools • The Android Way • Anatomy of a Simple Android Application • An Interactive Android Application • Dealing with Multiple Screens (Activities) • Life Cycle & interesting design choices 70 R. Vasa, 2011
  71. 71. Wiring up Multiple Activities Contact List Activity Contact Details Select Back 71 R. Vasa, 2011
  72. 72. Activities are Stacked in Android • All current activities are placed on a Stack • Newly started activities come into foreground Foreground/Active Contact Details Back button will Background/ pop top most starts Pausedactivity from stack Contact List 72 R. Vasa, 2011
  73. 73. Activities are like mini-processes • Android activities have their own life cycle • Asynchronous Messaging -- called “Intents” Communication between Activities is done by message Contact List Contact Details 73 R. Vasa, 2011
  74. 74. Async. messaging called “Intents” intent Contact List Contact Details Activities communicate with each other via Intents Think of an Intent as a message -- like email! 74 R. Vasa, 2011
  75. 75. Async. messaging called “Intents” Activity-X Photo Viewer view photo intent You can send a general purpose message (intent), allapplications capable of handling that Intent will respond Framework prescribes conventions for common intents 75 R. Vasa, 2011
  76. 76. Roadmap - Where are we? • Devices • What is Android? • Development Tools • The Android Way • Anatomy of a Simple Android Application • An Interactive Android Application • Dealing with Multiple Screens (Activities) •Life Cycle (& interesting design choices) 76 R. Vasa, 2011
  77. 77. Android Activities are Managed by O/S Application Activities have a parent application Activity-A Activity-B Activity-C Activity has Life Cycle Application is NOT managed directly by the O/S Life Cycle is Managed by Android Framework 77 R. Vasa, 2011
  78. 78. Android Activity Life Cycle Activity is re-started when orientation changesDevelopers have to save and retrieve state if orientation changes No, I am not kidding 78 R. Vasa, 2011
  79. 79. Security -- Android Devices has User UID (User ID) also has determines Android File System Access Application Permissions The UID is generated at install time based on the signature and package name 79 R. Vasa, 2011
  80. 80. A Short Plug!!! 80 R. Vasa, 2011
  81. 81. Mobile Development @ Swinburne • HIT8328(Lab work inDevelopment for Mobile Devices - Software Android platform) • HIT8329 - Creating Data Driven Mobile Applications (iOS focused) • Portfolio Based Assessment (no EXAM!) • We do not focus only on API -- there is tostrong conceptual foundation (preparing you a learn) • Can study both subjects as single units Follow @rvasa for updates Swinburne University of Technology is in Melbourne, Australia 81 R. Vasa, 2011

×