Android

Faixa Branca
Douglas Drumond!
drumond.douglas@gmail.com

eee19.com
eu.about()

eee19.com
eu.about()
• Bacharel em Ciência da Computação

eee19.com
eu.about()
• Bacharel em Ciência da Computação
• Analista de software no Instituto de
Pesquisas Eldorado

eee19.com
eu.about()
• Bacharel em Ciência da Computação
• Analista de software no Instituto de
Pesquisas Eldorado

• Sócio e co-fun...
eu.about()
• Bacharel em Ciência da Computação
• Analista de software no Instituto de
Pesquisas Eldorado

• Sócio e co-fun...
@Eldorado
Aplicações
Framework
Bibliotecas

Dalvik

Linux Kernel

eee19.com
@Eldorado
Aplicações
Framework
Bibliotecas
Linux Kernel

Dalvik
BP

eee19.com
Hoje

http://www.flickr.com/photos/natalielucier/3619749009/

eee19.com
http://www.flickr.com/photos/donkeyhotey/5666071828/
eee19.com
Ferramentas

eee19.com
Pré-requisitos
• JDK!
• Android SDK

eee19.com
Sistema Operacional
• Linux!
• Mac OS X (Intel)!
• Windows XP ou superior

eee19.com
Ferramentas

eee19.com
Ferramentas

eee19.com
Ferramentas

eee19.com
Ferramentas

eee19.com
Ferramentas

eee19.com
Ferramentas
• Remote debugger
• logcat
• DDMS

eee19.com
Ferramentas

eee19.com
Ferramentas

eee19.com
Ferramentas

eee19.com
Ferramentas

eee19.com
Ferramentas

eee19.com
Ferramentas

eee19.com
Ferramentas

eee19.com
Livre
• the definition of open: "mkdir android ; cd

android ; repo init -u git://
android.git.kernel.org/platform/manifest...
Arquitetura

eee19.com
Arquitetura

Linux Kernel

eee19.com
Arquitetura

Bibliotecas

Dalvik

Linux Kernel

eee19.com
Arquitetura
Framework
Bibliotecas

Dalvik

Linux Kernel

eee19.com
Arquitetura
Aplicações
Framework
Bibliotecas

Dalvik

Linux Kernel

eee19.com
Arquitetura
Aplicações
Framework
Bibliotecas

Dalvik

Linux Kernel

eee19.com
Dissecando as
Aplicações

eee19.com
Activity

eee19.com
Service

eee19.com
Content Provider

eee19.com
Intent

eee19.com
Intent

eee19.com
Intent

eee19.com
Intent

eee19.com
Intent

eee19.com
Broadcast Receiver
• Não possui interface (com usuário)!
• Roda em segundo plano!
• Reage a mensagens de broadcast!
• Exem...
Activity
• Interface!
• Um objetivo!
• Várias por aplicativo!
• Pode iniciar outras activities
eee19.com
Activity
• 3 estados: ativa, em pausa e parada!
• 3 ciclos de vida!
• pode morrer a qualquer momento se não
estiver ativa
...
Activity

eee19.com
Activity
onCreate()

eee19.com
Activity
onCreate()

onStart()

eee19.com
Activity
onCreate()

onStart()

onResume()

eee19.com
Activity
onCreate()

onStart()

onResume()

em execução

eee19.com
Activity
onCreate()

onStart()

onResume()

em execução

onPause()

eee19.com
Activity
onCreate()

onStart()

onResume()

em execução

onPause()

eee19.com
Activity
onCreate()

onStart()
Primeiro plano

onResume()

em execução

onPause()

eee19.com
Activity
onCreate()

onStart()
Primeiro plano

onResume()

em execução

onPause()

onStop()

eee19.com
Activity
onCreate()

onStart()
Primeiro plano

onRestart()

onResume()

em execução

onPause()

onStop()

eee19.com
Activity
onCreate()

onStart()
Primeiro plano

onRestart()

onResume()

em execução

onPause()

onStop()

eee19.com
Activity
onCreate()
Visível

onStart()
Primeiro plano

onRestart()

onResume()

em execução

onPause()

onStop()

eee19.co...
Activity
onCreate()
Visível

onStart()
Primeiro plano

onRestart()

onResume()

em execução

onPause()

onStop()

onDestro...
Activity
onCreate()
Visível

onStart()
Primeiro plano

onRestart()

onResume()

em execução

onPause()

onStop()

onDestro...
Activity
Ciclo de vida completo

onCreate()

Visível

onStart()
Primeiro plano

onRestart()

onResume()

em execução

onPa...
Multitarefa

eee19.com
Multitarefa

eee19.com
Multitarefa

onCreate()

eee19.com
Multitarefa

onPause()

eee19.com
Multitarefa

eee19.com
Multitarefa

onResume()

eee19.com
Multitarefa

onPause()

eee19.com
Multitarefa

onStop()

eee19.com
Multitarefa

onStop()

onCreate()

eee19.com
Multitarefa

onStop()

onCreate()
onPause()

eee19.com
Multitarefa

onStop()

onCreate()
onPause()
onStop()

eee19.com
Multitarefa

onStop()

onCreate()
onPause()
onStop()

eee19.com
Multitarefa

onStop()

onCreate()

onCreate()

onPause()
onStop()

eee19.com
Multitarefa

onStop()

onCreate()

onRestart()

onPause()
onStop()

onCreate()

eee19.com
Multitarefa

onStop()

onCreate()

onRestart()

onPause()

onStart()

onStop()

onCreate()

eee19.com
Prática
• Criar uma aplicação com os métodos
onCreate(), onStart(), onResume(),
onPause(), onStop(), onDestroy() e
onResta...
UI

• Hierarquia de ViewGroups e Views

eee19.com
View Group

View Group

View

View

View

View

View

http://developer.android.com/guide/topics/ui/overview.html
eee19.com
Layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/
res/android"
  ...
Layout
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layo...
Layout
• FrameLayout!
• LinearLayout!
• TableLayout!
• RelativeLayout
eee19.com
Eventos
• Definir um listener e registrá-lo com a View!
• Sobrecarregar um método de callback na
View

eee19.com
Listeners
• onClick() → View.OnClickListener!
• onLongClick() → View.OnLongClickListener!
• onFocusChange() → View.OnFocus...
Listeners
// Create an anonymous implementation of OnClickListener
private OnClickListener mCorkyListener = new OnClickLis...
Listeners
public class ExampleActivity extends Activity implements
OnClickListener {
    protected void onCreate(Bundle sa...
Intents
• Comunicação intra e inter app de um jeito
amigável e inteligente!

• Serve para iniciar activities, services e
b...
Intents
• Possui um alvo facultativo!
• Se não tiver especificado alvo, o sistema
encontra um!

• Pode executar uma Activit...
Intents
• Component name!
• Action!
• Data!
• Category!
• Extras!
• Flags
eee19.com
Intents
Constante

Alvo

Ação

ACTION_CALL

activity

Inicia uma ligação

ACTION_EDIT

activity

Apresenta dados a serem e...
Intent filter
<intent-filter . . . >
    <action android:name="com.example.project.SHOW_CURRENT" />
    <action android:nam...
http://developer.android.com/!
!

http://developer.android.com/
training/index.html!

eee19.com
Obrigado
• Twitter/ADN @douglasdrumond!
• www.eee19.com!
• gplus.to/douglasdrumond

eee19.com
Upcoming SlideShare
Loading in...5
×

[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013

330

Published on

Palestra ministrada no FLISOL Campinas 2013

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
330
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
8
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013

  1. 1. Android
 Faixa Branca Douglas Drumond! drumond.douglas@gmail.com eee19.com
  2. 2. eu.about() eee19.com
  3. 3. eu.about() • Bacharel em Ciência da Computação eee19.com
  4. 4. eu.about() • Bacharel em Ciência da Computação • Analista de software no Instituto de Pesquisas Eldorado eee19.com
  5. 5. eu.about() • Bacharel em Ciência da Computação • Analista de software no Instituto de Pesquisas Eldorado • Sócio e co-fundador da Y-MAX Consultoria em TI eee19.com
  6. 6. eu.about() • Bacharel em Ciência da Computação • Analista de software no Instituto de Pesquisas Eldorado • Sócio e co-fundador da Y-MAX Consultoria em TI • Organizador do GDG Campinas eee19.com
  7. 7. @Eldorado Aplicações Framework Bibliotecas Dalvik Linux Kernel eee19.com
  8. 8. @Eldorado Aplicações Framework Bibliotecas Linux Kernel Dalvik BP eee19.com
  9. 9. Hoje http://www.flickr.com/photos/natalielucier/3619749009/ eee19.com
  10. 10. http://www.flickr.com/photos/donkeyhotey/5666071828/ eee19.com
  11. 11. Ferramentas eee19.com
  12. 12. Pré-requisitos • JDK! • Android SDK eee19.com
  13. 13. Sistema Operacional • Linux! • Mac OS X (Intel)! • Windows XP ou superior eee19.com
  14. 14. Ferramentas eee19.com
  15. 15. Ferramentas eee19.com
  16. 16. Ferramentas eee19.com
  17. 17. Ferramentas eee19.com
  18. 18. Ferramentas eee19.com
  19. 19. Ferramentas • Remote debugger • logcat • DDMS eee19.com
  20. 20. Ferramentas eee19.com
  21. 21. Ferramentas eee19.com
  22. 22. Ferramentas eee19.com
  23. 23. Ferramentas eee19.com
  24. 24. Ferramentas eee19.com
  25. 25. Ferramentas eee19.com
  26. 26. Ferramentas eee19.com
  27. 27. Livre • the definition of open: "mkdir android ; cd android ; repo init -u git:// android.git.kernel.org/platform/manifest.git ; repo sync ; make" http://twitter.com/#!/arubin/status/27808662429 eee19.com
  28. 28. Arquitetura eee19.com
  29. 29. Arquitetura Linux Kernel eee19.com
  30. 30. Arquitetura Bibliotecas Dalvik Linux Kernel eee19.com
  31. 31. Arquitetura Framework Bibliotecas Dalvik Linux Kernel eee19.com
  32. 32. Arquitetura Aplicações Framework Bibliotecas Dalvik Linux Kernel eee19.com
  33. 33. Arquitetura Aplicações Framework Bibliotecas Dalvik Linux Kernel eee19.com
  34. 34. Dissecando as Aplicações eee19.com
  35. 35. Activity eee19.com
  36. 36. Service eee19.com
  37. 37. Content Provider eee19.com
  38. 38. Intent eee19.com
  39. 39. Intent eee19.com
  40. 40. Intent eee19.com
  41. 41. Intent eee19.com
  42. 42. Intent eee19.com
  43. 43. Broadcast Receiver • Não possui interface (com usuário)! • Roda em segundo plano! • Reage a mensagens de broadcast! • Exemplo: carga de bateria eee19.com
  44. 44. Activity • Interface! • Um objetivo! • Várias por aplicativo! • Pode iniciar outras activities eee19.com
  45. 45. Activity • 3 estados: ativa, em pausa e parada! • 3 ciclos de vida! • pode morrer a qualquer momento se não estiver ativa eee19.com
  46. 46. Activity eee19.com
  47. 47. Activity onCreate() eee19.com
  48. 48. Activity onCreate() onStart() eee19.com
  49. 49. Activity onCreate() onStart() onResume() eee19.com
  50. 50. Activity onCreate() onStart() onResume() em execução eee19.com
  51. 51. Activity onCreate() onStart() onResume() em execução onPause() eee19.com
  52. 52. Activity onCreate() onStart() onResume() em execução onPause() eee19.com
  53. 53. Activity onCreate() onStart() Primeiro plano onResume() em execução onPause() eee19.com
  54. 54. Activity onCreate() onStart() Primeiro plano onResume() em execução onPause() onStop() eee19.com
  55. 55. Activity onCreate() onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() eee19.com
  56. 56. Activity onCreate() onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() eee19.com
  57. 57. Activity onCreate() Visível onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() eee19.com
  58. 58. Activity onCreate() Visível onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() onDestroy() eee19.com
  59. 59. Activity onCreate() Visível onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() onDestroy() shutdown eee19.com
  60. 60. Activity Ciclo de vida completo onCreate() Visível onStart() Primeiro plano onRestart() onResume() em execução onPause() onStop() onDestroy() shutdown eee19.com
  61. 61. Multitarefa eee19.com
  62. 62. Multitarefa eee19.com
  63. 63. Multitarefa onCreate() eee19.com
  64. 64. Multitarefa onPause() eee19.com
  65. 65. Multitarefa eee19.com
  66. 66. Multitarefa onResume() eee19.com
  67. 67. Multitarefa onPause() eee19.com
  68. 68. Multitarefa onStop() eee19.com
  69. 69. Multitarefa onStop() onCreate() eee19.com
  70. 70. Multitarefa onStop() onCreate() onPause() eee19.com
  71. 71. Multitarefa onStop() onCreate() onPause() onStop() eee19.com
  72. 72. Multitarefa onStop() onCreate() onPause() onStop() eee19.com
  73. 73. Multitarefa onStop() onCreate() onCreate() onPause() onStop() eee19.com
  74. 74. Multitarefa onStop() onCreate() onRestart() onPause() onStop() onCreate() eee19.com
  75. 75. Multitarefa onStop() onCreate() onRestart() onPause() onStart() onStop() onCreate() eee19.com
  76. 76. Prática • Criar uma aplicação com os métodos onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy() e onRestart()! • Colocar logs nesses métodos e observar o que acontece eee19.com
  77. 77. UI • Hierarquia de ViewGroups e Views eee19.com
  78. 78. View Group View Group View View View View View http://developer.android.com/guide/topics/ui/overview.html eee19.com
  79. 79. Layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/ res/android"               android:layout_width="match_parent"               android:layout_height="match_parent"               android:orientation="vertical" >     <TextView android:id="@+id/text"               android:layout_width="wrap_content"               android:layout_height="wrap_content"               android:text="Hello, I am a TextView" />     <Button android:id="@+id/my_button"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="Hello, I am a Button" /> http://developer.android.com/ </LinearLayout> eee19.com
  80. 80. Layout public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main_layout); } Button myButton = (Button) findViewById(R.id.my_button); http://developer.android.com/ eee19.com
  81. 81. Layout • FrameLayout! • LinearLayout! • TableLayout! • RelativeLayout eee19.com
  82. 82. Eventos • Definir um listener e registrá-lo com a View! • Sobrecarregar um método de callback na View eee19.com
  83. 83. Listeners • onClick() → View.OnClickListener! • onLongClick() → View.OnLongClickListener! • onFocusChange() → View.OnFocusChangeListener! • onKey() → View.OnKeyListener! • onTouch() → View.OnTouchListener! • onCreateContextMenu() → View.OnCreateContextMenuListener eee19.com
  84. 84. Listeners // Create an anonymous implementation of OnClickListener private OnClickListener mCorkyListener = new OnClickListener() {     public void onClick(View v) {       // do something when the button is clicked     } }; ! protected void onCreate(Bundle savedValues) {     ...     // Capture our button from layout     Button button = (Button)findViewById(R.id.corky);     // Register the onClick listener with the implementation above     button.setOnClickListener(mCorkyListener); http://developer.android.com/     ... } eee19.com
  85. 85. Listeners public class ExampleActivity extends Activity implements OnClickListener {     protected void onCreate(Bundle savedValues) {         ...         Button button = (Button)findViewById(R.id.corky);         button.setOnClickListener(this);     } !     // Implement the OnClickListener callback     public void onClick(View v) {       // do something when the button is clicked     }     ... http://developer.android.com/ } eee19.com
  86. 86. Intents • Comunicação intra e inter app de um jeito amigável e inteligente! • Serve para iniciar activities, services e broadcast receivers eee19.com
  87. 87. Intents • Possui um alvo facultativo! • Se não tiver especificado alvo, o sistema encontra um! • Pode executar uma Activity ou Service específico! • IntentFilters eee19.com
  88. 88. Intents • Component name! • Action! • Data! • Category! • Extras! • Flags eee19.com
  89. 89. Intents Constante Alvo Ação ACTION_CALL activity Inicia uma ligação ACTION_EDIT activity Apresenta dados a serem editados ACTION_MAIN activity Activity inicial ACTION_SYNC activity Sincroniza dados com servidor ACTION_BATTERY_LOW broadcast receiver Aviso de bateria fraca ACTION_HEADSET_PLUG broadcast receiver Um fone de ouvido foi conectado ou desconectado ACTION_SCREEN_ON broadcast receiver A tela foi ligada (acesa) ACTION_TIMEZONE_CHANGED broadcast receiver Configurações de timezone modificadas eee19.com
  90. 90. Intent filter <intent-filter . . . >     <action android:name="com.example.project.SHOW_CURRENT" />     <action android:name="com.example.project.SHOW_RECENT" />     <action android:name="com.example.project.SHOW_PENDING" />     . . . </intent-filter> <intent-filter . . . >     <data android:mimeType="video/mpeg" android:scheme="http" . . . />     <data android:mimeType="audio/mpeg" android:scheme="http" . . . />     . . . </intent-filter> http://developer.android.com/ eee19.com
  91. 91. http://developer.android.com/! ! http://developer.android.com/ training/index.html! eee19.com
  92. 92. Obrigado • Twitter/ADN @douglasdrumond! • www.eee19.com! • gplus.to/douglasdrumond eee19.com
  1. A particular slide catching your eye?

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

×