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

92
eee19.com Android Faixa Branca Douglas Drumond [email protected]

description

Palestra ministrada no FLISOL Campinas 2013

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

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

eee19.com

AndroidFaixa Branca

Douglas [email protected]

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

eee19.com

eu.about()

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

eee19.com

eu.about()

• Bacharel em Ciência da Computação

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

eee19.com

eu.about()

• Bacharel em Ciência da Computação

• Analista de software no Instituto de Pesquisas Eldorado

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

eee19.com

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

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

eee19.com

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

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

eee19.com

@Eldorado

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

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

eee19.com

@Eldorado

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

BP

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

eee19.com

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

Hoje

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

eee19.com

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

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

eee19.com

Ferramentas

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

eee19.com

Pré-requisitos

• JDK!

• Android SDK

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

eee19.com

Sistema Operacional

• Linux!

• Mac OS X (Intel)!

• Windows XP ou superior

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

• Remote debugger

• logcat

• DDMS

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

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

eee19.com

Ferramentas

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

eee19.com

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 28: [FLISOL] Android Faixa Branca (Iniciando no Android) – 2013

eee19.com

Arquitetura

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

eee19.com

Arquitetura

Linux Kernel

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

eee19.com

Arquitetura

Linux Kernel

Bibliotecas Dalvik

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

eee19.com

Arquitetura

Linux Kernel

Bibliotecas

Framework

Dalvik

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

eee19.com

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

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

eee19.com

Arquitetura

Linux Kernel

Bibliotecas

Framework

Aplicações

Dalvik

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

eee19.com

Dissecando as Aplicações

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

eee19.com

Activity

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

eee19.com

Service

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

eee19.com

Content Provider

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

eee19.com

Intent

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

eee19.com

Intent

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

eee19.com

Intent

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

eee19.com

Intent

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

eee19.com

Intent

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

eee19.com

Broadcast Receiver

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

• Roda em segundo plano!

• Reage a mensagens de broadcast!

• Exemplo: carga de bateria

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

eee19.com

Activity

• Interface!

• Um objetivo!

• Várias por aplicativo!

• Pode iniciar outras activities

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

eee19.com

Activity

• 3 estados: ativa, em pausa e parada!

• 3 ciclos de vida!

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

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

eee19.com

Activity

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

eee19.com

ActivityonCreate()

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

eee19.com

ActivityonCreate()

onStart()

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

eee19.com

ActivityonCreate()

onStart()

onResume()

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

eee19.com

ActivityonCreate()

onStart()

onResume()

em execução

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

eee19.com

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

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

eee19.com

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

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

eee19.com

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

Primeiro plano

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

eee19.com

ActivityonCreate()

onStart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

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

eee19.com

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

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

eee19.com

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

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

eee19.com

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

Primeiro plano

Visível

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

eee19.com

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

Primeiro plano

Visível

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

eee19.com

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

Primeiro plano

Visível

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

eee19.com

ActivityonCreate()

onStart() onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

Primeiro plano

Visível

Ciclo de vida completo

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

eee19.com

Multitarefa

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

eee19.com

Multitarefa

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

eee19.com

Multitarefa

onCreate()

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

eee19.com

Multitarefa

onPause()

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

eee19.com

Multitarefa

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

eee19.com

Multitarefa

onResume()

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

eee19.com

Multitarefa

onPause()

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

eee19.com

Multitarefa

onStop()

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

eee19.com

Multitarefa

onStop() onCreate()

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

eee19.com

Multitarefa

onStop() onCreate()

onPause()

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

eee19.com

Multitarefa

onStop() onCreate()

onStop()

onPause()

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

eee19.com

Multitarefa

onStop() onCreate()

onStop()

onPause()

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

eee19.com

Multitarefa

onStop() onCreate() onCreate()

onStop()

onPause()

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

eee19.com

Multitarefa

onRestart()

onStop() onCreate() onCreate()

onStop()

onPause()

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

eee19.com

Multitarefa

onStart()

onRestart()

onStop() onCreate() onCreate()

onStop()

onPause()

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

eee19.com

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 77: [FLISOL] Android Faixa Branca (Iniciando no Android) – 2013

eee19.com

UI

• Hierarquia de ViewGroups e Views

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

eee19.com

View Group

ViewView Group View

View ViewView

http://developer.android.com/guide/topics/ui/overview.html

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

eee19.com

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" /> </LinearLayout> http://developer.android.com/

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

eee19.com

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 81: [FLISOL] Android Faixa Branca (Iniciando no Android) – 2013

eee19.com

Layout

• FrameLayout!

• LinearLayout!

• TableLayout!

• RelativeLayout

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

eee19.com

Eventos

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

• Sobrecarregar um método de callback na View

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

eee19.com

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 85: [FLISOL] Android Faixa Branca (Iniciando no Android) – 2013

eee19.com

Listenerspublic 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 86: [FLISOL] Android Faixa Branca (Iniciando no Android) – 2013

eee19.com

Intents

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

• Serve para iniciar activities, services e broadcast receivers

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

eee19.com

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 88: [FLISOL] Android Faixa Branca (Iniciando no Android) – 2013

eee19.com

Intents

• Component name!

• Action!

• Data!

• Category!

• Extras!

• Flags

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

eee19.com

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 90: [FLISOL] Android Faixa Branca (Iniciando no Android) – 2013

eee19.com

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/

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

eee19.com

http://developer.android.com/!!

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

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

eee19.com

Obrigado

• Twitter/ADN @douglasdrumond!

• www.eee19.com!

• gplus.to/douglasdrumond