[android devcamp] android bootcamp – 2012

92
Android Bootcamp Douglas Drumond [email protected]

Upload: douglas-drumond

Post on 01-Sep-2014

483 views

Category:

Technology


2 download

DESCRIPTION

Básico de Android apresentado no Bootcamp promovido pelo GTUG Campinas em conjunto com GTUG São Paulo

TRANSCRIPT

Page 1: [Android devcamp] Android Bootcamp – 2012

Android BootcampDouglas Drumond!

[email protected]

Page 2: [Android devcamp] Android Bootcamp – 2012

eu.about()

Page 3: [Android devcamp] Android Bootcamp – 2012

eu.about()

• Técnico

Page 4: [Android devcamp] Android Bootcamp – 2012

eu.about()

• Técnico

• (pseudo)Matemático

Page 5: [Android devcamp] Android Bootcamp – 2012

eu.about()

• Técnico

• (pseudo)Matemático

• Bacharel em Ciência da Computação

Page 6: [Android devcamp] Android Bootcamp – 2012

eu.about()

• Técnico

• (pseudo)Matemático

• Bacharel em Ciência da Computação

• Analista de software no Instituto de Pesquisas Eldorado

Page 7: [Android devcamp] Android Bootcamp – 2012

@Eldorado

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Page 8: [Android devcamp] Android Bootcamp – 2012

@Eldorado

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

BP

Page 9: [Android devcamp] Android Bootcamp – 2012

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

Hoje

Page 10: [Android devcamp] Android Bootcamp – 2012

http://www.gtugs.org/

Page 11: [Android devcamp] Android Bootcamp – 2012

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

Page 12: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 13: [Android devcamp] Android Bootcamp – 2012

Pré-requisitos

• JDK!

• Android SDK

Page 14: [Android devcamp] Android Bootcamp – 2012

Sistema Operacional

• Linux!

• Mac OS X (Intel)!

• Windows XP ou superior

Page 15: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 16: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 17: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 18: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 19: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 20: [Android devcamp] Android Bootcamp – 2012

Ferramentas

• Remote debugger

• logcat

• DDMS

Page 21: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 22: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 23: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 24: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 25: [Android devcamp] Android Bootcamp – 2012

Ferramentas

Page 26: [Android devcamp] Android Bootcamp – 2012

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

Page 27: [Android devcamp] Android Bootcamp – 2012

Arquitetura

Page 28: [Android devcamp] Android Bootcamp – 2012

Arquitetura

Linux Kernel

Page 29: [Android devcamp] Android Bootcamp – 2012

Arquitetura

Linux Kernel

Bibliotecas Dalvik

Page 30: [Android devcamp] Android Bootcamp – 2012

Arquitetura

Linux Kernel

Bibliotecas

Framework

Dalvik

Page 31: [Android devcamp] Android Bootcamp – 2012

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Page 32: [Android devcamp] Android Bootcamp – 2012

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

Page 33: [Android devcamp] Android Bootcamp – 2012

Dissecando as Aplicações

Page 34: [Android devcamp] Android Bootcamp – 2012

Activity

Page 35: [Android devcamp] Android Bootcamp – 2012

Service

Page 36: [Android devcamp] Android Bootcamp – 2012

Content Provider

Page 37: [Android devcamp] Android Bootcamp – 2012

Intent

Page 38: [Android devcamp] Android Bootcamp – 2012

Intent

Page 39: [Android devcamp] Android Bootcamp – 2012

Intent

Page 40: [Android devcamp] Android Bootcamp – 2012

Intent

Page 41: [Android devcamp] Android Bootcamp – 2012

Intent

Page 42: [Android devcamp] Android Bootcamp – 2012

Broadcast Receiver

• Não possui interface (com usuário)!

• Roda em segundo plano!

• Reage a mensagens de broadcast!

• Exemplo: carga de bateria

Page 43: [Android devcamp] Android Bootcamp – 2012

Activity

• Interface!

• Um objetivo!

• Várias por aplicativo!

• Pode iniciar outras activities

Page 44: [Android devcamp] Android Bootcamp – 2012

Activity

• 3 estados: ativa, em pausa e parada!

• 3 ciclos de vida!

• pode morrer a qualquer momento se não estiver ativa

Page 45: [Android devcamp] Android Bootcamp – 2012

Activity

Page 46: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

Page 47: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart()

Page 48: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart()

onResume()

Page 49: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart()

onResume()

em execução

Page 50: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

Page 51: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

Page 52: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

Primeiro plano

Page 53: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Page 54: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Page 55: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Page 56: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Visível

Page 57: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

Primeiro plano

Visível

Page 58: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

Primeiro plano

Visível

Page 59: [Android devcamp] Android Bootcamp – 2012

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

Primeiro plano

Visível

Ciclo de vida completo

Page 60: [Android devcamp] Android Bootcamp – 2012

Multitarefa

Page 61: [Android devcamp] Android Bootcamp – 2012

Multitarefa

Page 62: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onCreate()

Page 63: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onPause()

Page 64: [Android devcamp] Android Bootcamp – 2012

Multitarefa

Page 65: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onResume()

Page 66: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onPause()

Page 67: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onStop()

Page 68: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onStop() onCreate()

Page 69: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onStop() onCreate()

onPause()

Page 70: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onStop() onCreate()

onStop()

onPause()

Page 71: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onStop() onCreate()

onStop()

onPause()

Page 72: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onStop() onCreate() onCreate()

onStop()

onPause()

Page 73: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onRestart()

onStop() onCreate() onCreate()

onStop()

onPause()

Page 74: [Android devcamp] Android Bootcamp – 2012

Multitarefa

onStart()

onRestart()

onStop() onCreate() onCreate()

onStop()

onPause()

Page 75: [Android devcamp] Android Bootcamp – 2012

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

Page 76: [Android devcamp] Android Bootcamp – 2012

UI

• Hierarquia de ViewGroups e Views

Page 77: [Android devcamp] Android Bootcamp – 2012

View Group

ViewView Group View

View ViewView

http://developer.android.com/guide/topics/ui/how-android-draws.html

Page 78: [Android devcamp] Android Bootcamp – 2012

Layout<?xml&version="1.0"&encoding="utf98"?>&<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"&/>&</LinearLayout>&

http://developer.android.com/

Page 79: [Android devcamp] Android Bootcamp – 2012

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/

Page 80: [Android devcamp] Android Bootcamp – 2012

Layout

• FrameLayout!

• LinearLayout!

• TableLayout!

• RelativeLayout

Page 81: [Android devcamp] Android Bootcamp – 2012

Eventos

• Definir um listener e registrá-lo com a View!

• Sobrecarregar um método de callback na View

Page 83: [Android devcamp] Android Bootcamp – 2012

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/

Page 84: [Android devcamp] Android Bootcamp – 2012

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/

Page 85: [Android devcamp] Android Bootcamp – 2012

Intents

• Comunicação intra e inter app de um jeito amigável e inteligente!

• Serve para iniciar activities, services e broadcast receivers

Page 86: [Android devcamp] Android Bootcamp – 2012

Intents

• Possui um alvo facultativo!

• Se não tiver especificado alvo, o sistema encontra um!

• Pode executar uma Activity ou Service específico!

• IntentFilters

Page 87: [Android devcamp] Android Bootcamp – 2012

Intents

• Component name!

• Action!

• Data!

• Category!

• Extras!

• Flags

Page 88: [Android devcamp] Android Bootcamp – 2012

IntentsConstante Alvo AçãoACTION_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

Page 89: [Android devcamp] Android Bootcamp – 2012

Intent filter

<intent9filter&.&.&.&>&&&&&<action&android:name="com.example.project.SHOW_CURRENT"&/>&&&&&<action&android:name="com.example.project.SHOW_RECENT"&/>&&&&&<action&android:name="com.example.project.SHOW_PENDING"&/>&&&&&.&.&.&</intent9filter>

<intent9filter&.&.&.&>&&&&&<data&android:mimeType="video/mpeg"&android:scheme="http"&.&.&.&/>&&&&&&<data&android:mimeType="audio/mpeg"&android:scheme="http"&.&.&.&/>&&&&&.&.&.&</intent9filter> http://developer.android.com/

Page 90: [Android devcamp] Android Bootcamp – 2012

http://developer.android.com/ !

http://developer.android.com/resources/browser.html?tag=tutorial

Page 91: [Android devcamp] Android Bootcamp – 2012

www.slideshare.net/douglasdrumond/

Page 92: [Android devcamp] Android Bootcamp – 2012

Obrigado