SlideShare uma empresa Scribd logo
1 de 91
Baixar para ler offline
Jumpstart to Android
App development

Lars Vogel
http://www.vogella.de
Twitter: @vogella
What is Android?

Fundamentals

Constructs of Android

Live Coding

Q&A
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.
More Android Sessions:


Wednesday, 11.10 -
12.00 - So whats so cool about Android 4.x

Thuersday – Friday – Full day Android training
Android Experience?
What is
Android?
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)
On Android you develop in Java




(There is also the NDK which allows development in C / C++...)
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............
Its like
programming for
hardware which is
10 years old
… with insame
performance
requirements
On Android you develop in Java


Really?
Android Programming




 You use the Java
 programming language
 but Android does not run
 Java Bytecode
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
Developer
Toolchain
Android Development Tools (ADT)
for Eclipse



Eclipse based tooling
• Provide the emulator
• Wizard for creating new project
• Additional Tooling, e.g views
Emulator

           QEMU-based ARM emulator runs
           same image as a device

           Use same toolchain to work with
           device or emulator

           Inital startup is
           slooooowwwwww.....
Demo
AndroidManifest.xml

• General configuration files for
  your application
• Contains all component
  definitions of your appication
Resources from /res are
automatically „indexed“
ADT maintains a
reference to all
resources in the R.java
Main Android programming
       constructs
      Activity


          Views

             Intents

                 Broadcast Receiver

                  Services

                       ContentProvider
Context
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
Demo
Activities project
    Your first
Activity
Extends Context

An activity is a single, focused
thing that the user can do.

Kind of a screen but not entirely...
View vrs ViewGroup


android.viewView: UI Widget
 - Button
 - TextView
 - EditText
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.
Demo – Hello JFokus
Andoid is
allowed to kill
your app to
save memory.
Life Cyle of an Activity



void onCreate(Bundle savedInstanceState)
void onStart()
void onRestart()
void onResume()
void onPause()
void onStop()
void onDestroy()
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
To test flip your
     device
Def
    inin
        gA
          ctiv
               itie
                    s
Calling Activities


Calling Activities
creates a stack ->
Back button goes
back to the
previous activity


-> Think of it as a
stack of cards
Defining Activities
• Create a class which extends
  „Activitiy“
• Create an entry in
  „AndroidManifest.xml“ for the activity.
• <activity
  android:name=“MyNewActivity“></a
  ctivity>
I had only the
best intents....
Intents


Message passing mechanism to start
Activities, Services or to trigger
(system) events.

Allow modular architecture

Can contain data (extra)
Intents



 • Explicit: Asking someone to do something
 • Implicit: Asking the system who can do something


                   Intent
Demo Intents
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");
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);
 }
}
XML
Drawables
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
Services and receiver
Services

Allow real multitasking and background processing

De-coupled from the Activity life-cyle
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
Notification
 Manager
  Demo
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
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
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
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
Demo
    alarm
receiver.phone
Security
Each apps gets into own Linux user
and runs in its own process
Android Application requires
explicit permissions, e.g. for
• DB access
•   Phone access
•   Contacts
•   Internet
•   System messages
Background Processing
Be fast!

Avoid ApplicationNotResponding
Error
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)
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
AsyncTask
• To use it subclass it

AsyncTask <TypeOfVarArgParams , ProgressValue ,
ResultValue>

doInBackground() – Do the work

onPostExecute() – Update the UI
Saving the thread
• If a thread runs in your Activity you
  want to save it.
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.
Option Menus and
       Action Bar
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.
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.
Preferences
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
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
ListView
ListView


Can be used to display a list of items

Gets his data from an adapter
Adapter
                       Data for ListView
                       defined by Adapter




View per row defined
by Adapter
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
What if the layout should
     not be static?
Define your own Adapter
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%
Views and Touch
There is more....
I have
feelings

           Camera API
           Motion Detection
           Location API (GIS)
           Heat Sensor
           Accelerator
Example Camera API
I can talk and
     hear


Internet (java.net, Apache HttpClient, JSON...)
Bluetooth
Email
SMS
VoIP (SIP (Session Initiation Protocol))
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
Android 4.0
Whats so cool about Android 4.0?




• Come to my talk on Wednesday... ;-)
Summary
Android powerful and well-
 designed development
         platform

   Easy to get started

 Power to the developer
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
Thank you
For further questions:


Lars.Vogel@gmail.com
http://www.vogella.de
Twitter http://www.twitter.com/vogella
Google+ http://gplus.to/vogella
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

Mais conteúdo relacionado

Semelhante a Android Jumpstart Jfokus

Lec005 android start_program
Lec005 android start_programLec005 android start_program
Lec005 android start_programEyad Almasri
 
Android Workshop_1
Android Workshop_1Android Workshop_1
Android Workshop_1Purvik Rana
 
Android Development
Android DevelopmentAndroid Development
Android Developmentmclougm4
 
Android Introduction on Java Forum Stuttgart 11
Android Introduction on Java Forum Stuttgart 11 Android Introduction on Java Forum Stuttgart 11
Android Introduction on Java Forum Stuttgart 11 Lars Vogel
 
Android Tutorial For Beginners Part-1
Android Tutorial For Beginners Part-1Android Tutorial For Beginners Part-1
Android Tutorial For Beginners Part-1Amit Saxena
 
Introduction to android sessions new
Introduction to android   sessions newIntroduction to android   sessions new
Introduction to android sessions newJoe Jacob
 
Dori waldman android _course
Dori waldman android _courseDori waldman android _course
Dori waldman android _courseDori Waldman
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android DevelopmentAly Abdelkareem
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android DevelopmentOwain Lewis
 
Android Programming made easy
Android Programming made easyAndroid Programming made easy
Android Programming made easyLars Vogel
 
Introduction to Android Development and Security
Introduction to Android Development and SecurityIntroduction to Android Development and Security
Introduction to Android Development and SecurityKelwin Yang
 
Android application development
Android application developmentAndroid application development
Android application developmentslidesuren
 
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptxMugiiiReee
 
Android In A Nutshell
Android In A NutshellAndroid In A Nutshell
Android In A NutshellTed Chien
 

Semelhante a Android Jumpstart Jfokus (20)

Unit I- ANDROID OVERVIEW.ppt
Unit I- ANDROID OVERVIEW.pptUnit I- ANDROID OVERVIEW.ppt
Unit I- ANDROID OVERVIEW.ppt
 
Lec005 android start_program
Lec005 android start_programLec005 android start_program
Lec005 android start_program
 
Android
AndroidAndroid
Android
 
Android Workshop_1
Android Workshop_1Android Workshop_1
Android Workshop_1
 
Android101
Android101Android101
Android101
 
Android Development
Android DevelopmentAndroid Development
Android Development
 
Android Introduction on Java Forum Stuttgart 11
Android Introduction on Java Forum Stuttgart 11 Android Introduction on Java Forum Stuttgart 11
Android Introduction on Java Forum Stuttgart 11
 
Android Tutorial For Beginners Part-1
Android Tutorial For Beginners Part-1Android Tutorial For Beginners Part-1
Android Tutorial For Beginners Part-1
 
Android by Swecha
Android by SwechaAndroid by Swecha
Android by Swecha
 
Introduction to android sessions new
Introduction to android   sessions newIntroduction to android   sessions new
Introduction to android sessions new
 
Dori waldman android _course
Dori waldman android _courseDori waldman android _course
Dori waldman android _course
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
Android Programming made easy
Android Programming made easyAndroid Programming made easy
Android Programming made easy
 
Explore Android Internals
Explore Android InternalsExplore Android Internals
Explore Android Internals
 
Introduction to Android Development and Security
Introduction to Android Development and SecurityIntroduction to Android Development and Security
Introduction to Android Development and Security
 
Android application development
Android application developmentAndroid application development
Android application development
 
Android beginners David
Android beginners DavidAndroid beginners David
Android beginners David
 
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx11.11.2020 - Unit 5-3  ACTIVITY, MENU AND SQLITE DATABASE.pptx
11.11.2020 - Unit 5-3 ACTIVITY, MENU AND SQLITE DATABASE.pptx
 
Android In A Nutshell
Android In A NutshellAndroid In A Nutshell
Android In A Nutshell
 

Mais de Lars Vogel

Eclipse IDE and Platform news on Fosdem 2020
Eclipse IDE and Platform news on Fosdem 2020Eclipse IDE and Platform news on Fosdem 2020
Eclipse IDE and Platform news on Fosdem 2020Lars Vogel
 
Eclipse platform news and how to contribute to the Eclipse Open Source project
Eclipse platform news and how to contribute to the Eclipse Open Source projectEclipse platform news and how to contribute to the Eclipse Open Source project
Eclipse platform news and how to contribute to the Eclipse Open Source projectLars Vogel
 
Android design and Custom views
Android design and Custom views Android design and Custom views
Android design and Custom views Lars Vogel
 
How to become an Eclipse committer in 20 minutes and fork the IDE
How to become an Eclipse committer in 20 minutes and fork the IDEHow to become an Eclipse committer in 20 minutes and fork the IDE
How to become an Eclipse committer in 20 minutes and fork the IDELars Vogel
 
Building beautiful User Interface in Android
Building beautiful User Interface in AndroidBuilding beautiful User Interface in Android
Building beautiful User Interface in AndroidLars Vogel
 
What is so cool about Android 4.0
What is so cool about Android 4.0What is so cool about Android 4.0
What is so cool about Android 4.0Lars Vogel
 
What is so cool about Android 4.0?
What is so cool about Android 4.0?What is so cool about Android 4.0?
What is so cool about Android 4.0?Lars Vogel
 
Eclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse DayEclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse DayLars Vogel
 
Android C2DM Presentation at O'Reilly AndroidOpen Conference
Android C2DM Presentation at O'Reilly AndroidOpen ConferenceAndroid C2DM Presentation at O'Reilly AndroidOpen Conference
Android C2DM Presentation at O'Reilly AndroidOpen ConferenceLars Vogel
 
Android Overview (Karlsruhe VKSI)
Android Overview (Karlsruhe VKSI)Android Overview (Karlsruhe VKSI)
Android Overview (Karlsruhe VKSI)Lars Vogel
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsLars Vogel
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaLars Vogel
 
Android Cloud to Device Messaging with the Google App Engine
Android Cloud to Device Messaging with the Google App EngineAndroid Cloud to Device Messaging with the Google App Engine
Android Cloud to Device Messaging with the Google App EngineLars Vogel
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for JavaLars Vogel
 
Eclipse 4.0 - Dynamic Models
Eclipse 4.0 - Dynamic Models Eclipse 4.0 - Dynamic Models
Eclipse 4.0 - Dynamic Models Lars Vogel
 
Eclipse 40 Labs- Eclipse Summit Europe 2010
Eclipse 40 Labs- Eclipse Summit Europe 2010Eclipse 40 Labs- Eclipse Summit Europe 2010
Eclipse 40 Labs- Eclipse Summit Europe 2010Lars Vogel
 
Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Lars Vogel
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Lars Vogel
 
Eclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ RheinjugEclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ RheinjugLars Vogel
 
Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Lars Vogel
 

Mais de Lars Vogel (20)

Eclipse IDE and Platform news on Fosdem 2020
Eclipse IDE and Platform news on Fosdem 2020Eclipse IDE and Platform news on Fosdem 2020
Eclipse IDE and Platform news on Fosdem 2020
 
Eclipse platform news and how to contribute to the Eclipse Open Source project
Eclipse platform news and how to contribute to the Eclipse Open Source projectEclipse platform news and how to contribute to the Eclipse Open Source project
Eclipse platform news and how to contribute to the Eclipse Open Source project
 
Android design and Custom views
Android design and Custom views Android design and Custom views
Android design and Custom views
 
How to become an Eclipse committer in 20 minutes and fork the IDE
How to become an Eclipse committer in 20 minutes and fork the IDEHow to become an Eclipse committer in 20 minutes and fork the IDE
How to become an Eclipse committer in 20 minutes and fork the IDE
 
Building beautiful User Interface in Android
Building beautiful User Interface in AndroidBuilding beautiful User Interface in Android
Building beautiful User Interface in Android
 
What is so cool about Android 4.0
What is so cool about Android 4.0What is so cool about Android 4.0
What is so cool about Android 4.0
 
What is so cool about Android 4.0?
What is so cool about Android 4.0?What is so cool about Android 4.0?
What is so cool about Android 4.0?
 
Eclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse DayEclipse e4 - Google Eclipse Day
Eclipse e4 - Google Eclipse Day
 
Android C2DM Presentation at O'Reilly AndroidOpen Conference
Android C2DM Presentation at O'Reilly AndroidOpen ConferenceAndroid C2DM Presentation at O'Reilly AndroidOpen Conference
Android C2DM Presentation at O'Reilly AndroidOpen Conference
 
Android Overview (Karlsruhe VKSI)
Android Overview (Karlsruhe VKSI)Android Overview (Karlsruhe VKSI)
Android Overview (Karlsruhe VKSI)
 
Eclipse 2011 Hot Topics
Eclipse 2011 Hot TopicsEclipse 2011 Hot Topics
Eclipse 2011 Hot Topics
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
Android Cloud to Device Messaging with the Google App Engine
Android Cloud to Device Messaging with the Google App EngineAndroid Cloud to Device Messaging with the Google App Engine
Android Cloud to Device Messaging with the Google App Engine
 
Google App Engine for Java
Google App Engine for JavaGoogle App Engine for Java
Google App Engine for Java
 
Eclipse 4.0 - Dynamic Models
Eclipse 4.0 - Dynamic Models Eclipse 4.0 - Dynamic Models
Eclipse 4.0 - Dynamic Models
 
Eclipse 40 Labs- Eclipse Summit Europe 2010
Eclipse 40 Labs- Eclipse Summit Europe 2010Eclipse 40 Labs- Eclipse Summit Europe 2010
Eclipse 40 Labs- Eclipse Summit Europe 2010
 
Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010Eclipse 40 - Eclipse Summit Europe 2010
Eclipse 40 - Eclipse Summit Europe 2010
 
Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4 Eclipse 40 and Eclipse e4
Eclipse 40 and Eclipse e4
 
Eclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ RheinjugEclipse RCP Overview @ Rheinjug
Eclipse RCP Overview @ Rheinjug
 
Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010Eclipse e4 on Java Forum Stuttgart 2010
Eclipse e4 on Java Forum Stuttgart 2010
 

Último

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Último (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

Android Jumpstart Jfokus

  • 1. Jumpstart to Android App development Lars Vogel http://www.vogella.de Twitter: @vogella
  • 2. What is Android? Fundamentals Constructs of Android Live Coding Q&A
  • 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. More Android Sessions: Wednesday, 11.10 - 12.00 - So whats so cool about Android 4.x Thuersday – Friday – Full day Android training
  • 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.
  • 9. On Android you develop in Java (There is also the NDK which allows development in C / C++...)
  • 10. 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............
  • 11. Its like programming for hardware which is 10 years old
  • 13. On Android you develop in Java Really?
  • 14. Android Programming You use the Java programming language but Android does not run Java Bytecode
  • 15. 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
  • 17. Android Development Tools (ADT) for Eclipse Eclipse based tooling • Provide the emulator • Wizard for creating new project • Additional Tooling, e.g views
  • 18. Emulator QEMU-based ARM emulator runs same image as a device Use same toolchain to work with device or emulator Inital startup is slooooowwwwww.....
  • 19. Demo
  • 20. AndroidManifest.xml • General configuration files for your application • Contains all component definitions of your appication
  • 21. Resources from /res are automatically „indexed“
  • 22. ADT maintains a reference to all resources in the R.java
  • 23. Main Android programming constructs Activity Views Intents Broadcast Receiver Services ContentProvider
  • 25. 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
  • 27. Activity Extends Context An activity is a single, focused thing that the user can do. Kind of a screen but not entirely...
  • 28. View vrs ViewGroup android.viewView: UI Widget - Button - TextView - EditText
  • 29. 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.
  • 30. Demo – Hello JFokus
  • 31. Andoid is allowed to kill your app to save memory.
  • 32. Life Cyle of an Activity void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy()
  • 33. 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
  • 34.
  • 35. To test flip your device
  • 36. Def inin gA ctiv itie s
  • 37. Calling Activities Calling Activities creates a stack -> Back button goes back to the previous activity -> Think of it as a stack of cards
  • 38. Defining Activities • Create a class which extends „Activitiy“ • Create an entry in „AndroidManifest.xml“ for the activity. • <activity android:name=“MyNewActivity“></a ctivity>
  • 39. I had only the best intents....
  • 40. Intents Message passing mechanism to start Activities, Services or to trigger (system) events. Allow modular architecture Can contain data (extra)
  • 41. Intents • Explicit: Asking someone to do something • Implicit: Asking the system who can do something Intent
  • 43. 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");
  • 44. 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); } }
  • 46. 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
  • 48. Services Allow real multitasking and background processing De-coupled from the Activity life-cyle
  • 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
  • 51. 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
  • 52. 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
  • 53. 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
  • 54. 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
  • 55. Demo alarm receiver.phone
  • 57. Each apps gets into own Linux user and runs in its own process
  • 58. Android Application requires explicit permissions, e.g. for • DB access • Phone access • Contacts • Internet • System messages
  • 61. 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)
  • 62. 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
  • 63. AsyncTask • To use it subclass it AsyncTask <TypeOfVarArgParams , ProgressValue , ResultValue> doInBackground() – Do the work onPostExecute() – Update the UI
  • 64. Saving the thread • If a thread runs in your Activity you want to save it.
  • 65. 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.
  • 66. Option Menus and Action Bar
  • 67. 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.
  • 68. 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.
  • 70. 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
  • 71. 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
  • 73. ListView Can be used to display a list of items Gets his data from an adapter
  • 74. Adapter Data for ListView defined by Adapter View per row defined by Adapter
  • 75. 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
  • 76. What if the layout should not be static?
  • 77. Define your own Adapter
  • 78. 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%
  • 81. I have feelings Camera API Motion Detection Location API (GIS) Heat Sensor Accelerator
  • 83. I can talk and hear Internet (java.net, Apache HttpClient, JSON...) Bluetooth Email SMS VoIP (SIP (Session Initiation Protocol))
  • 84. 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
  • 86. Whats so cool about Android 4.0? • Come to my talk on Wednesday... ;-)
  • 87. Summary Android powerful and well- designed development platform Easy to get started Power to the developer
  • 88.
  • 89. 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
  • 90. Thank you For further questions: Lars.Vogel@gmail.com http://www.vogella.de Twitter http://www.twitter.com/vogella Google+ http://gplus.to/vogella
  • 91. 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