SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
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 Apps (Tutorials)
• Demonstrate the Tools / Environment
• Introduction to the Documentation
 • (Which is changing...)
• Build Enthusiasm (you can do it)
Introduction Goals
• Differences from Other Environments
  •UI - Declarative XML Layout
  • Activities
  • Intents / Intent Receivers
  • Services
  • Content Providers
  • Application Life Cycle
• ProjectResources, Building
           Structure
  • Files,
Tools
• SDK
  • Command line tools (adb, aidl, etc.)
  • Supporting Libraries
• IDE (We will use Eclipse)
  • Eclipse Plugin
  • Included:
   • Debugger
   • Profiler
   • Resource Building
   • Deployment
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
GUI Creation
 / Layouts
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
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
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
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
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
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 return a value
  • Can be embedded
Intents & IntentFilters
• Intents: description of what you want done
• IntentFilter: what an Activity or
  IntentReceiver can do
• Activities publish their IntentFilters in
  AndroidManifest.xml
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
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
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.)
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
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
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
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 process
• Processes are started and stopped as
  needed to run an application's components
• Processes killed to reclaim resources
Life Cycle
   of an
Application
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
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
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
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
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 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
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
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
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
Other APIs
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.
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()
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
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
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
XMPP
• Alternative to SMS for message passing
• Can passonly at present including bundles
            richer content,
 • Strings
• Can fire Intents
• Server initiated push
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 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
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?
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
Questions?

Más contenido relacionado

Similar a Android Bootcamp

An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Androidnatdefreitas
 
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketAPIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketScott Abel
 
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsI Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsMichael Lange
 
Galaxy
GalaxyGalaxy
Galaxybosc
 
Static Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech FestStatic Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech FestDenim Group
 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWebDave Bouwman
 
Smart Client Development
Smart Client DevelopmentSmart Client Development
Smart Client DevelopmentTamir Khason
 
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008Vando Batista
 
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume LaforgeGroovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume LaforgeGuillaume Laforge
 
Emulation Bridging The Past To The Future Dirk Von Suchodoletz
Emulation Bridging  The Past To The Future Dirk Von SuchodoletzEmulation Bridging  The Past To The Future Dirk Von Suchodoletz
Emulation Bridging The Past To The Future Dirk Von SuchodoletzDigitalPreservationEurope
 
Ajax Tutorial
Ajax TutorialAjax Tutorial
Ajax Tutorialoscon2007
 
Android webinar class_1
Android webinar class_1Android webinar class_1
Android webinar class_1Edureka!
 
Internet-enabled GIS Using Free and Open Source Tools
Internet-enabled GIS Using Free and Open Source ToolsInternet-enabled GIS Using Free and Open Source Tools
Internet-enabled GIS Using Free and Open Source ToolsJohn Reiser
 
Introduction to android sessions new
Introduction to android   sessions newIntroduction to android   sessions new
Introduction to android sessions newJoe Jacob
 
Sql 2008 For Developers
Sql 2008 For DevelopersSql 2008 For Developers
Sql 2008 For DevelopersMithun T. Dhar
 
Part 2 android application development 101
Part 2 android application development 101Part 2 android application development 101
Part 2 android application development 101Michael Angelo Rivera
 
Pref Presentation (2)
Pref Presentation (2)Pref Presentation (2)
Pref Presentation (2)Prachi Patil
 

Similar a Android Bootcamp (20)

An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Android
 
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty MarketAPIs and SDKs: Breaking Into and Succeeding in a Specialty Market
APIs and SDKs: Breaking Into and Succeeding in a Specialty Market
 
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other ThingsI Just Want to Run My Code: Waypoint, Nomad, and Other Things
I Just Want to Run My Code: Waypoint, Nomad, and Other Things
 
Galaxy
GalaxyGalaxy
Galaxy
 
Static Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech FestStatic Analysis Techniques For Testing Application Security - Houston Tech Fest
Static Analysis Techniques For Testing Application Security - Houston Tech Fest
 
Usability in the GeoWeb
Usability in the GeoWebUsability in the GeoWeb
Usability in the GeoWeb
 
Smart Client Development
Smart Client DevelopmentSmart Client Development
Smart Client Development
 
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
 
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume LaforgeGroovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
Groovy in the Enterprise - Case Studies - TSSJS Prague 2008 - Guillaume Laforge
 
Os Haase
Os HaaseOs Haase
Os Haase
 
Emulation Bridging The Past To The Future Dirk Von Suchodoletz
Emulation Bridging  The Past To The Future Dirk Von SuchodoletzEmulation Bridging  The Past To The Future Dirk Von Suchodoletz
Emulation Bridging The Past To The Future Dirk Von Suchodoletz
 
C Language
C LanguageC Language
C Language
 
Ajax Tutorial
Ajax TutorialAjax Tutorial
Ajax Tutorial
 
Android webinar class_1
Android webinar class_1Android webinar class_1
Android webinar class_1
 
PPT Companion to Android
PPT Companion to AndroidPPT Companion to Android
PPT Companion to Android
 
Internet-enabled GIS Using Free and Open Source Tools
Internet-enabled GIS Using Free and Open Source ToolsInternet-enabled GIS Using Free and Open Source Tools
Internet-enabled GIS Using Free and Open Source Tools
 
Introduction to android sessions new
Introduction to android   sessions newIntroduction to android   sessions new
Introduction to android sessions new
 
Sql 2008 For Developers
Sql 2008 For DevelopersSql 2008 For Developers
Sql 2008 For Developers
 
Part 2 android application development 101
Part 2 android application development 101Part 2 android application development 101
Part 2 android application development 101
 
Pref Presentation (2)
Pref Presentation (2)Pref Presentation (2)
Pref Presentation (2)
 

Último

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Último (20)

"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

Android Bootcamp

  • 1. An Introduction to Android for Developers
  • 2. Introduction Goals
  • 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. 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. Tools • SDK • Command line tools (adb, aidl, etc.) • Supporting Libraries • IDE (We will use Eclipse) • Eclipse Plugin • Included: • Debugger • Profiler • Resource Building • Deployment
  • 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. GUI Creation / Layouts
  • 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. 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. 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. 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. 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. Hello World Demo First Project with Eclipse Layout Experimentation
  • 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. 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. 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. 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. 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. 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. 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. 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. Quick Dial Code Walkthrough Eclipse Import + Code Walkthrough
  • 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. Life Cycle of an Application
  • 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. 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. 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. 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. Note Pad Example See the Tutorial in the SDK Multi-stage exercise to illustrate the basics.
  • 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. 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. 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. 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
  • 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. 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. 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. 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. 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. XMPP • Alternative to SMS for message passing • Can passonly at present including bundles richer content, • Strings • Can fire Intents • Server initiated push
  • 44. Low-Level H/W Access • APIs not yet available • Will cover low-level hardware, e.g. •Bluetooth • WiFi
  • 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. 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. 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