Your SlideShare is downloading. ×
0
An Introduction to Android
      for Developers
Introduction
   Goals
Introduction Goals
• Get you Started with Android Development
• Get the Environment Set Up and Working
• Create Some Demo ...
Introduction Goals
• Differences from Other Environments
  •UI - Declarative XML Layout
  • Activities
  • Intents / Inten...
Tools
• SDK
  • Command line tools (adb, aidl, etc.)
  • Supporting Libraries
• IDE (We will use Eclipse)
  • Eclipse Plug...
Not Covered
• Java Development Basics
• Similarities to Other Environments
• Parts that Aren’t Ready
 • Syncing etc.
• Any...
GUI Creation
 / Layouts
GUI Creation
• Different from
  • Java Swing
  • Java ME
• Layouts
  • res/layout - XML Files Go Here
  • Layouts - Can be...
GUI Creation
• IDs / Lookup
 • Used to Bridge Views / Java Code
 • @+id/myname Syntax
• Resource Building
 • Eclipse Plugi...
Layout Basics
• Views Building Blocks
  • Basic
  • TextView, EditText, Button, ImageView,
    Checkbox, Lists, etc
• Layo...
Layout Parameters
• Parameters Control Many Aspects
• Some are More Common:
  • <android:layout_height>
    <android:layou...
When Things Go Wrong
• Android is still early-release software
• Most problems fall within two areas
  •Build Problems
   ...
Hello World
      Demo
First Project with Eclipse

Layout Experimentation
Android
Concepts
Activities
• Typically corresponds to one screen in the UI
  • Can be faceless
  • Can be in a floating window
  • Can retu...
Intents & IntentFilters
• Intents: description of what you want done
• IntentFilter: what an Activity or
  IntentReceiver ...
Intents & IntentFilters
• Forward navigation is accomplished by
  resolving Intents
 • Caller calls startActivity(intent)
...
IntentReceivers
•   Respond to alarms and notifications

    •   Including those originating externally

•   Will wake up y...
IntentReceivers
•   IntentReceivers can (should) start Services for
    lengthy tasks (e.g. downloading new data)

•   Int...
Services
•   Faceless classes that run in the background

    •   Music player, network download, etc.

•   Services run i...
ContentProviders
• Enable data sharing across applications
• Provide uniform APIs to:
 • query data (returns a Cursor)
 • ...
ContentProviders
• All content is represented by URIs
 • Convenience methods mean clients don’t
    need to know syntax
• ...
Quick Dial
     Code
  Walkthrough
Eclipse Import + Code
Walkthrough
Life Cycle
& Bundles
Application Lifecycle
• Applications run in their own processes
 • Many Activities, Services, etc. can run in
    the same...
Life Cycle
   of an
Application
Activities
• Designed to be reused and replaced
 • Your application can invoke Activities
    from another application
  •...
Activity Lifecycle
• An Application can have Several Activities
• Activities can be started with
  •   startActivity() - S...
Bundles
• Similar in concept to a simple Map
• Can put data into Bundle under a name
 • bundle.putString(“name”, <data obj...
Storage / Persistence
• Normally handled by ContentProvider
  •   Front end to File, DB, Online Service, etc.

• SQL Lite ...
Note Pad
       Example
See the Tutorial in the SDK

Multi-stage exercise to illustrate
the basics.
Resources,
Packaging and
  Security
Resources
• Added under the res/values, xml, raw
                           folder
  •layout, drawable, anim,
  • layout f...
Assets
• Similar to Resources,Assets
                          but...
  • InputStream access to
  • Placed under assets fo...
APK files
• Android Packages
  •All class files and resources needed to run
    • Class files recoded to dex
  • Manifest defi...
Security
• Unique Users for Apps
  •App completely sandboxed
  • Sharing only via ContentProviders, Activities,
    Intent...
Other APIs
2D Graphics
• Similar to the Java 2d API methods
  • Canvas passed in to graphics
  • Drawable Resources
  • Alpha channel...
3D Graphics
• Optional Hardware Support
• OpenGL ES 1.0 OpenGL 1.3 forfeatures)
                  (+ some 1.1
 • Correspon...
Location Based Services
• Optional ID supportedSupport for GPS
             Hardware
 • But Cell                on all dev...
Maps
• Natural complement to LBS
• MapView and MapActivity
 • MapActivity easier to use
 • MapView can be embedded in your...
Media
• Play back and Record media files
• Audio, Picturebeing Video
                  and
 • CODECs still       decided
• ...
XMPP
• Alternative to SMS for message passing
• Can passonly at present including bundles
            richer content,
 • S...
Low-Level H/W Access
• APIs not yet available
• Will cover low-level hardware, e.g.
  •Bluetooth
  • WiFi
Learning More
Learning More
• Sample Lander, Snake - 2d graphics, game
          Apps
  • Lunar
  • Notepad - ContentProvider, Painting ...
Documentation
• Currently Being Improved
  •Class Documentation Coverage
  • Accessibility
  • Additions - Like Samples, T...
Command Line Tools
• ADB shell - command line into emulator/device
  •adb
      • Simple unix-like shell
      • Can delet...
Questions?
Upcoming SlideShare
Loading in...5
×

Android Bootcamp

3,871

Published on

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

No Downloads
Views
Total Views
3,871
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
181
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Android Bootcamp"

  1. 1. An Introduction to Android for Developers
  2. 2. Introduction Goals
  3. 3. Introduction Goals • Get you Started with Android Development • Get the Environment Set Up and Working • Create Some Demo Apps (Tutorials) • Demonstrate the Tools / Environment • Introduction to the Documentation • (Which is changing...) • Build Enthusiasm (you can do it)
  4. 4. Introduction Goals • Differences from Other Environments •UI - Declarative XML Layout • Activities • Intents / Intent Receivers • Services • Content Providers • Application Life Cycle • ProjectResources, Building Structure • Files,
  5. 5. Tools • SDK • Command line tools (adb, aidl, etc.) • Supporting Libraries • IDE (We will use Eclipse) • Eclipse Plugin • Included: • Debugger • Profiler • Resource Building • Deployment
  6. 6. Not Covered • Java Development Basics • Similarities to Other Environments • Parts that Aren’t Ready • Syncing etc. • Anything We Can’t Get to in time! • Get you going, not teach you everything
  7. 7. GUI Creation / Layouts
  8. 8. GUI Creation • Different from • Java Swing • Java ME • Layouts • res/layout - XML Files Go Here • Layouts - Can be Nested • Strings / i18n • res/values/strings.xml • Deployment
  9. 9. GUI Creation • IDs / Lookup • Used to Bridge Views / Java Code • @+id/myname Syntax • Resource Building • Eclipse Plugin Builds into R.java • Efficient Resource Creation / Representation • Less Chance of Programatic Errors (Intellisense) • XML Declarative Faster to Develop
  10. 10. Layout Basics • Views Building Blocks • Basic • TextView, EditText, Button, ImageView, Checkbox, Lists, etc • Layouts : Each Child a Layer • FrameLayout • LinearLayout : Single Row / Column • RelativeLayout : Relative to Parent / Other Views • TableLayout : Rows and Columns - HTML like • AbsoluteLayout : <x,y> Coords - Discouraged • Layouts can be Nested
  11. 11. Layout Parameters • Parameters Control Many Aspects • Some are More Common: • <android:layout_height> <android:layout_width> and • “wrap_content”, “fill_parent”, values... • <android:layout_weight> • Relative amount of available space to use • Most are Reference documentation most useful in the Docs •Class
  12. 12. When Things Go Wrong • Android is still early-release software • Most problems fall within two areas •Build Problems • R class not updated or running old code • Look at console and problems pane • Clean Build • Communication breakdown to emulator • Code not deploying, errors, debugger failure • Use DDMS Reset ADB option • Or: quit eclipse and emulator, adb kill-server
  13. 13. Hello World Demo First Project with Eclipse Layout Experimentation
  14. 14. Android Concepts
  15. 15. Activities • Typically corresponds to one screen in the UI • Can be faceless • Can be in a floating window • Can return a value • Can be embedded
  16. 16. Intents & IntentFilters • Intents: description of what you want done • IntentFilter: what an Activity or IntentReceiver can do • Activities publish their IntentFilters in AndroidManifest.xml
  17. 17. Intents & IntentFilters • Forward navigation is accomplished by resolving Intents • Caller calls startActivity(intent) (or startSubActivity... ) • System picks Activity whose IntentFilter best matches intent • New Activity is informed of the Intent
  18. 18. IntentReceivers • Respond to alarms and notifications • Including those originating externally • Will wake up your process if necessary • System can broadcast intents: data connection, phone state changed, etc • Apps can invent and broadcast their own intents
  19. 19. IntentReceivers • IntentReceivers can (should) start Services for lengthy tasks (e.g. downloading new data) • IntentReceivers can put up UI notifications • Register IntentReceivers in AndroidManifest.xml • Can also attach IntentReceivers to other objects so they can receive notifications (Activities,Views, etc.)
  20. 20. Services • Faceless classes that run in the background • Music player, network download, etc. • Services run in your application’s process or their own process • Your code can bind to Services in your process or another process • Once bound, you communicate with Services using a remotable interface defined in IDL
  21. 21. ContentProviders • Enable data sharing across applications • Provide uniform APIs to: • query data (returns a Cursor) • delete, update, and insert rows • Hide underlying implementation • Work across processes
  22. 22. ContentProviders • All content is represented by URIs • Convenience methods mean clients don’t need to know syntax • ContentProviders own URIs based on authority, e.g. content://contacts/... • ContentProviders are responsible for mapping URIs they own to a MIME type
  23. 23. Quick Dial Code Walkthrough Eclipse Import + Code Walkthrough
  24. 24. Life Cycle & Bundles
  25. 25. Application Lifecycle • Applications run in their own processes • Many Activities, Services, etc. can run in the same process • Processes are started and stopped as needed to run an application's components • Processes killed to reclaim resources
  26. 26. Life Cycle of an Application
  27. 27. Activities • Designed to be reused and replaced • Your application can invoke Activities from another application • Another application can invoke your Activities • Existing Activities can be replaced with a new Activity that fulfills the same contract
  28. 28. Activity Lifecycle • An Application can have Several Activities • Activities can be started with • startActivity() - Synchronous • startSubActivity() - Asynchronous, with handler callback • Each Activity has its Own Life Cycle • Messages can be Passed with Bundles • Like Services on a Bus
  29. 29. Bundles • Similar in concept to a simple Map • Can put data into Bundle under a name • bundle.putString(“name”, <data object>) • Can also be retrieved by name • bundle.getString(“name”) • Bundles used to pass messages/store state • onFreeze() has outState bundle passed in • Data stored in outstate handed back to onCreate as the icicle bundle
  30. 30. Storage / Persistence • Normally handled by ContentProvider • Front end to File, DB, Online Service, etc. • SQL Lite is Available to Developers • Simple SQL DB • Can also access flat files • Online communication yet to be formalized
  31. 31. Note Pad Example See the Tutorial in the SDK Multi-stage exercise to illustrate the basics.
  32. 32. Resources, Packaging and Security
  33. 33. Resources • Added under the res/values, xml, raw folder •layout, drawable, anim, • layout for declarative layout files • drawable/anim for bitmaps, transitions, etc. • values includes strings,more colors, dimensions, styles and arrays, • xml for general XML files available at runtime • raw for binary files (e.g. sound) • Compiled intoAPI convenience methods the apk •Read through • e.g. XML access looks like a pull parser
  34. 34. Assets • Similar to Resources,Assets but... • InputStream access to • Placed under assets folder • Looks like a “root” folder to app • Read only access • Any kindon device - watch the size of file •Stored
  35. 35. APK files • Android Packages •All class files and resources needed to run • Class files recoded to dex • Manifest defines activities and other facets • DEX Executable •Dalvik • More compressed form than bytecode • Third party libs can be converted to dex • APK is the application •Install - put APK in data/app • Uninstall - remove APK
  36. 36. Security • Unique Users for Apps •App completely sandboxed • Sharing only via ContentProviders, Activities, IntentReceivers, Services, etc. • Strong, linux-backed security • Accessbe declared in theFeatures to Restricted •Must Manifest • Still working on rest of security model • Some kind of trusted authority • Advanced users should have fine grained control
  37. 37. Other APIs
  38. 38. 2D Graphics • Similar to the Java 2d API methods • Canvas passed in to graphics • Drawable Resources • Alpha channel available • Supports transformations (e.g. Rotate, Scale) • CustomView Graphical Components •Extend • Override onDraw() • Override onMeasure() - setMeasuredDimension() • Other Optional Overrides: onKeyDown(), onKeyUp(), onMotionEvent(), etc.
  39. 39. 3D Graphics • Optional Hardware Support • OpenGL ES 1.0 OpenGL 1.3 forfeatures) (+ some 1.1 • Corresponds to desktop • Using the API • Extend View • Obtain handle to OpenGLContext • Obtain handle to GL object in onDraw()
  40. 40. Location Based Services • Optional ID supportedSupport for GPS Hardware • But Cell on all devices • LocationProvider • Part of the android.location package • Use LocationManager to get location and bearing • Context.getSystemService (Context.LOCATION_SERVICE) • Mock in the Emulator LocationProviders •Test • /data/misc/location/<provider_name> • class, kml, nmea, track file support
  41. 41. Maps • Natural complement to LBS • MapView and MapActivity • MapActivity easier to use • MapView can be embedded in your app • MapView more flexibleown controls • Can surround with your • And, can trigger events in your own activity • But, more involved API • Must be created in a MapActivity subclass
  42. 42. Media • Play back and Record media files • Audio, Picturebeing Video and • CODECs still decided • Access through Intents • Stream from a URL • Set MIME type to help decide action • Also, class level API sound effects) • Embed playback (e.g. • Recording
  43. 43. XMPP • Alternative to SMS for message passing • Can passonly at present including bundles richer content, • Strings • Can fire Intents • Server initiated push
  44. 44. Low-Level H/W Access • APIs not yet available • Will cover low-level hardware, e.g. •Bluetooth • WiFi
  45. 45. Learning More
  46. 46. Learning More • Sample Lander, Snake - 2d graphics, game Apps • Lunar • Notepad - ContentProvider, Painting override • SampleCode - Layouts, Services, Intents & Receivers, much more • Online •groups.google.com/group/android-developers • /android-beginners,/android-challenge /android-internals, /android-discuss, • http://android.com • http://code.google.com/android
  47. 47. Documentation • Currently Being Improved •Class Documentation Coverage • Accessibility • Additions - Like Samples, Tutorials, etc. • Demo •Tutorials • Class References • Including Layout Parameters • What’s Included in the Class Libs?
  48. 48. Command Line Tools • ADB shell - command line into emulator/device •adb • Simple unix-like shell • Can delete apk files from data/app • adb install - add packages • Emulator •Many command line flags • Different resolution, options, etc. • Otherdocumentation for aidl, aapt, etc. Commands • See • Don’t have to use Eclipse
  49. 49. Questions?
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×