Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Android Jumpstart Jfokus

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 91 Anzeige

Weitere Verwandte Inhalte

Ähnlich wie Android Jumpstart Jfokus (20)

Weitere von Lars Vogel (20)

Anzeige

Aktuellste (20)

Android Jumpstart Jfokus

  1. 1. Jumpstart to Android App development Lars Vogel http://www.vogella.de Twitter: @vogella
  2. 2. What is Android? Fundamentals Constructs of Android Live Coding Q&A
  3. 3. About me – Lars Vogel Independent Eclipse and Android consultant, trainer and book author Eclipse committer Maintains http://www.vogella.de Java, Eclipse and Android related Tutorials with more then a million visitors per month.
  4. 4. More Android Sessions: Wednesday, 11.10 - 12.00 - So whats so cool about Android 4.x Thuersday – Friday – Full day Android training
  5. 5. Android Experience?
  6. 6. What is Android?
  7. 7. Android from 10 000 feet - Open Source - Full stack based on Linux - Java programming interface - Project is lead by Google - Tooling available for Eclipse (and other IDE's)
  8. 8. On Android you develop in Java (There is also the NDK which allows development in C / C++...)
  9. 9. Overview of the API Capabilities Rich UI components Threads and Background Processing Full network stack (Http, JSON) Database available Images Access to the hardware (GPS, Camera, Phone) and much more............
  10. 10. Its like programming for hardware which is 10 years old
  11. 11. … with insame performance requirements
  12. 12. On Android you develop in Java Really?
  13. 13. Android Programming You use the Java programming language but Android does not run Java Bytecode
  14. 14. Dalvik Run Dalvik Executable Code (.dex) Tool dx converts Java Bytecode into .dex • Register based VM vrs. stack based as the JVM • .dex Files contain more then one class • Approx. 50 % of the size of a class file • op codes are two bytes instead of one in the JVM • As of Android 2.2 Dalvik JIT compiler • Primary engineer: Dan Bornstein
  15. 15. Developer Toolchain
  16. 16. Android Development Tools (ADT) for Eclipse Eclipse based tooling • Provide the emulator • Wizard for creating new project • Additional Tooling, e.g views
  17. 17. Emulator QEMU-based ARM emulator runs same image as a device Use same toolchain to work with device or emulator Inital startup is slooooowwwwww.....
  18. 18. Demo
  19. 19. AndroidManifest.xml • General configuration files for your application • Contains all component definitions of your appication
  20. 20. Resources from /res are automatically „indexed“
  21. 21. ADT maintains a reference to all resources in the R.java
  22. 22. Main Android programming constructs Activity Views Intents Broadcast Receiver Services ContentProvider
  23. 23. Context
  24. 24. Context Global information about an application environment. Allows access to application-specific resources and classes Support application-level operations such as launching activities, broadcasting and receiving intents, etc. Basically all Android classes need a context Activity extends Context
  25. 25. Demo Activities project Your first
  26. 26. Activity Extends Context An activity is a single, focused thing that the user can do. Kind of a screen but not entirely...
  27. 27. View vrs ViewGroup android.viewView: UI Widget - Button - TextView - EditText
  28. 28. Layouts android.view.ViewGroup - Layout - extends View • Layouts are typically defined via XML files (resources) • You can assign properties to the layout elements to influence their behavior.
  29. 29. Demo – Hello JFokus
  30. 30. Andoid is allowed to kill your app to save memory.
  31. 31. Life Cyle of an Activity void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy()
  32. 32. States of an Activity • Active/ Running – Visible and interacts with user • Paused – still visible but partically obscured (other transparant activity, dialog or the phone screen), instance is running but might be killed by the system • Stopped – completely obscured, e.g. User presses the home screen button, instance is running but might be killed by the system • Killed – if stopped or paused, system might calling finish or by killing it
  33. 33. To test flip your device
  34. 34. Def inin gA ctiv itie s
  35. 35. Calling Activities Calling Activities creates a stack -> Back button goes back to the previous activity -> Think of it as a stack of cards
  36. 36. Defining Activities • Create a class which extends „Activitiy“ • Create an entry in „AndroidManifest.xml“ for the activity. • <activity android:name=“MyNewActivity“></a ctivity>
  37. 37. I had only the best intents....
  38. 38. Intents Message passing mechanism to start Activities, Services or to trigger (system) events. Allow modular architecture Can contain data (extra)
  39. 39. Intents • Explicit: Asking someone to do something • Implicit: Asking the system who can do something Intent
  40. 40. Demo Intents
  41. 41. Implicit Intents • new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.vogella.de")); • new Intent(Intent.ACTION_CALL, Uri.parse("tel: (+49)12345789")); • new Intent(Intent.ACTION_VIEW, Uri.parse("geo:50.123,7.1434?z=19")); • new Intent("android.media.action.IMAGE_CAPTURE");
  42. 42. Gettings results Intent intent = new Intent("android.media.action.IMAGE_CAPTURE"); startActivityForResult(intent, 0); public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK && requestCode == 0) { String result = data.toURI(); Toast.makeText(this, result, Toast.LENGTH_LONG); } }
  43. 43. XML Drawables
  44. 44. XML Drawables • XML Resources • Can be used to define transitions, shapes or state A drawable resource is something that can be drawn to the screen
  45. 45. Services and receiver
  46. 46. Services Allow real multitasking and background processing De-coupled from the Activity life-cyle
  47. 47. Services Service runs in the background without interacting with the user. Android provides a multitude of system services • NotificationService • VibratorService • LocationService • AlarmService • .... Access via context.getSystemService(Context.CONST); You can define your own service for things that should run in the background
  48. 48. Notification Manager Demo
  49. 49. Services Service runs in the background without interacting with the user. Android provides a multitude of system services • NotificationService • VibratorService • LocationService • AlarmService • .... Access via context.getSystemService(Context.CONST); You can define your own service for things that should run in the background
  50. 50. Broadcast Receiver – Listen to events Example: BATTERY_LOW, ACTION_BOOT_COMPLETED android.intent.action.PHONE_STATE Defined statically in manifest or temporary via code Broadcast Receiver only works within the onReceive() method C2DM
  51. 51. Own Service • Extend Service or IntentService • start with startService(Intent) or bindService(Intent). • onStartCommand is called in the service • bindService gets a ServiceConnection as parameter which receives a Binder object which can be used to communicate with the service
  52. 52. How to start a service Broadcast Receiver – Event: BOOT_COMPLETED Or ACTION_EXTERNAL_APPLICATIONS_A VAILABLE startService in the onReceiveMethod() Timer Service Start BroadcastReceiver which starts the service
  53. 53. Demo alarm receiver.phone
  54. 54. Security
  55. 55. Each apps gets into own Linux user and runs in its own process
  56. 56. Android Application requires explicit permissions, e.g. for • DB access • Phone access • Contacts • Internet • System messages
  57. 57. Background Processing
  58. 58. Be fast! Avoid ApplicationNotResponding Error
  59. 59. Use Threads (not the UI one) • Long running stuff should run in the background • Thread cannot modify the UI • Synch with the UI thread runOnUiThread(new Runnable)
  60. 60. Handler and AsyncTask • Handler runs in the UI thread • Allows to send Message object and or to send Runnable to it handler.sendMessage(msg) handler.post(runnable) • AsyncTask for more complex work
  61. 61. AsyncTask • To use it subclass it AsyncTask <TypeOfVarArgParams , ProgressValue , ResultValue> doInBackground() – Do the work onPostExecute() – Update the UI
  62. 62. Saving the thread • If a thread runs in your Activity you want to save it.
  63. 63. Lifecycle - Thread • If Activity is destroyed the Threads should be preserved. • Close down Dialogs in the onDestroy() method • One object can be saved via onRetainConConfigurationInstance() • Access via getLastNonConfigurationInstance() • Only use static inner classes in your Threads otherwise you create a memory leakage.
  64. 64. Option Menus and Action Bar
  65. 65. Option Menu & Action Bar • Option Menu displays if „Menu“ button is pressed • You can decided if the entries are displayed in the Action Bar or in a menu • Use „ifRoom“ flag if possible.
  66. 66. Option Menu & Action Bar • Option Menu displays if „Menu“ button is pressed • You can decided if the entries are displayed in the Action Bar or in a menu • Use „ifRoom“ flag if possible.
  67. 67. Preferences
  68. 68. Read and Write Preferences • Key – Value pairs • PreferenceManager.getDefaultShared Preferences(this); – To read: getString(key), get... – To change use edit(), putType(key, value), commit() • To maintain use PreferenceActivity
  69. 69. PreferenceActivity • Create resource file (preference) • New Activity which extends PreferenceActivity • To add preferences: – addPreferencesFromResource(R.xml.prefer ences); • Saving and edits will be handled automatically by the PreferenceActivity
  70. 70. ListView
  71. 71. ListView Can be used to display a list of items Gets his data from an adapter
  72. 72. Adapter Data for ListView defined by Adapter View per row defined by Adapter
  73. 73. ListActivity ListActivity has already a predefined ListView with the id @android:id/list which will be used automatically. Provides nice method hooks for typical operations on lists If you define your own layout this layout must contain a ListView with the ID: @+android:id/list
  74. 74. What if the layout should not be static?
  75. 75. Define your own Adapter
  76. 76. Reuse existing rows If convertView is not null -> reuse it Saves memory and CPU power (approx. 150 % faster according to Google IO) Holder Pattern saves 25%
  77. 77. Views and Touch
  78. 78. There is more....
  79. 79. I have feelings Camera API Motion Detection Location API (GIS) Heat Sensor Accelerator
  80. 80. Example Camera API
  81. 81. I can talk and hear Internet (java.net, Apache HttpClient, JSON...) Bluetooth Email SMS VoIP (SIP (Session Initiation Protocol))
  82. 82. Other Capabilities Push to device Interactive Widgets on the homescreen Live Wallpapers (as background) Animations and Styling Simple List handling (Multi-) Touch NFC Canvas / OpenGL ES (Game programming....) Native Rendering
  83. 83. Android 4.0
  84. 84. Whats so cool about Android 4.0? • Come to my talk on Wednesday... ;-)
  85. 85. Summary Android powerful and well- designed development platform Easy to get started Power to the developer
  86. 86. Android: Where to go from here: Android Introduction Tutorial http://www.vogella.de/articles/Android/article.html Or Google for „Android Development Tutorial“ Android SQLite and ContentProvider Book http://www.amazon.com/dp/B006YUWEFE More on Android http://www.vogella.de/android.html
  87. 87. Thank you For further questions: Lars.Vogel@gmail.com http://www.vogella.de Twitter http://www.twitter.com/vogella Google+ http://gplus.to/vogella
  88. 88. License & Acknowledgements • This work is licensed under the Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 Germany License – See http://creativecommons.org/licenses/by-nc-nd/3.0/de/deed.en_US

×