SlideShare une entreprise Scribd logo
1  sur  92
Télécharger pour lire hors ligne
Android Bootcamp
Douglas Drumond!
drumond.douglas@gmail.com
eu.about()
eu.about()
• Técnico
eu.about()
• Técnico
• (pseudo)Matemático
eu.about()
• Técnico
• (pseudo)Matemático
• Bacharel em Ciência da Computação
eu.about()
• Técnico
• (pseudo)Matemático
• Bacharel em Ciência da Computação
• Analista de software no Instituto de
Pesquisas Eldorado
@Eldorado
Aplicações
Framework
Bibliotecas
Linux Kernel

Dalvik
@Eldorado
Aplicações
Framework
Bibliotecas
Linux Kernel

Dalvik
BP
Hoje

http://www.flickr.com/photos/natalielucier/3619749009/
http://www.gtugs.org/
http://www.flickr.com/photos/donkeyhotey/5666071828/
Ferramentas
Pré-requisitos
• JDK!
• Android SDK
Sistema Operacional
• Linux!
• Mac OS X (Intel)!
• Windows XP ou superior
Ferramentas
Ferramentas
Ferramentas
Ferramentas
Ferramentas
Ferramentas
• Remote debugger
• logcat
• DDMS
Ferramentas
Ferramentas
Ferramentas
Ferramentas
Ferramentas
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
Arquitetura
Arquitetura

Linux Kernel
Arquitetura

Bibliotecas
Linux Kernel

Dalvik
Arquitetura
Framework
Bibliotecas
Linux Kernel

Dalvik
Arquitetura
Aplicações
Framework
Bibliotecas
Linux Kernel

Dalvik
Arquitetura
Aplicações
Framework
Bibliotecas
Linux Kernel

Dalvik
Dissecando as
Aplicações
Activity
Service
Content Provider
Intent
Intent
Intent
Intent
Intent
Broadcast Receiver
• Não possui interface (com usuário)!
• Roda em segundo plano!
• Reage a mensagens de broadcast!
• Exemplo: carga de bateria
Activity
• Interface!
• Um objetivo!
• Várias por aplicativo!
• Pode iniciar outras activities
Activity
• 3 estados: ativa, em pausa e parada!
• 3 ciclos de vida!
• pode morrer a qualquer momento se não
estiver ativa
Activity
Activity
onCreate()
Activity
onCreate()

onStart()
Activity
onCreate()

onStart()

onResume()
Activity
onCreate()

onStart()

onResume()

em execução
Activity
onCreate()

onStart()

onResume()

em execução

onPause()
Activity
onCreate()

onStart()

onResume()

em execução

onPause()
Activity
onCreate()

onStart()
Primeiro plano

onResume()

em execução

onPause()
Activity
onCreate()

onStart()
Primeiro plano

onResume()

em execução

onPause()

onStop()
Activity
onCreate()

onStart()
Primeiro plano

onResume()

em execução

onPause()

onStop()

onRestart()
Activity
onCreate()

onStart()
Primeiro plano

onResume()

em execução

onPause()

onStop()

onRestart()
Activity
onCreate()
Visível

onStart()
Primeiro plano

onResume()

em execução

onPause()

onStop()

onRestart()
Activity
onCreate()
Visível

onStart()
Primeiro plano

onResume()

em execução

onPause()

onStop()

onDestroy()

onRestart()
Activity
onCreate()
Visível

onStart()
Primeiro plano

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

onRestart()
Activity
Ciclo de vida completo

onCreate()

Visível

onStart()
Primeiro plano

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown

onRestart()
Multitarefa
Multitarefa
Multitarefa

onCreate()
Multitarefa

onPause()
Multitarefa
Multitarefa

onResume()
Multitarefa

onPause()
Multitarefa

onStop()
Multitarefa

onStop()

onCreate()
Multitarefa

onStop()

onCreate()
onPause()
Multitarefa

onStop()

onCreate()
onPause()
onStop()
Multitarefa

onStop()

onCreate()
onPause()
onStop()
Multitarefa

onStop()

onCreate()
onPause()
onStop()

onCreate()
Multitarefa

onStop()

onCreate()

onRestart()

onPause()
onStop()

onCreate()
Multitarefa

onStop()

onCreate()

onRestart()

onPause()

onStart()

onStop()

onCreate()
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
UI

• Hierarquia de ViewGroups e Views
View Group

View Group

View

View

View

View

View

http://developer.android.com/guide/topics/ui/how-androiddraws.html
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/
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/
Layout
• FrameLayout!
• LinearLayout!
• TableLayout!
• RelativeLayout
Eventos
• Definir um listener e registrá-lo com a View!
• Sobrecarregar um método de callback na
View
Listeners
• onClick() → View.OnClickListener!
• onLongClick() → View.OnLongClickListener!
• onFocusChange() → View.OnFocusChangeListener!
• onKey() → View.OnKeyListener!
• onTouch() → View.OnTouchListener!
• onCreateContextMenu() →
View.OnCreateContextMenuListener
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/
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/
Intents
• Comunicação intra e inter app de um jeito
amigável e inteligente!

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

• Pode executar uma Activity ou Service
específico!

• IntentFilters
Intents
• Component name!
• Action!
• Data!
• Category!
• Extras!
• Flags
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
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/
http://developer.android.com/
!

http://developer.android.com/
resources/browser.html?tag=tutorial
www.slideshare.net/
douglasdrumond/
Obrigado

Contenu connexe

Similaire à [Android devcamp] Android Bootcamp – 2012

Introdução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaIntrodução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaÁlvaro Justen
 
Aplicativos Multiplataforma Baseados em Firefox OS
Aplicativos Multiplataforma Baseados em Firefox OSAplicativos Multiplataforma Baseados em Firefox OS
Aplicativos Multiplataforma Baseados em Firefox OSEliezer Bernart
 
Suporte em TI para Desktop com Software Livre - EXPOTEC 2016
Suporte em TI para Desktop com Software Livre - EXPOTEC 2016Suporte em TI para Desktop com Software Livre - EXPOTEC 2016
Suporte em TI para Desktop com Software Livre - EXPOTEC 2016José Roberto Ferreira
 
Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015talkitbr
 
Suporte em TI com Software Livre
Suporte em TI com Software LivreSuporte em TI com Software Livre
Suporte em TI com Software LivrePotiLivre Sobrenome
 
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012Rogerio Prado de Jesus
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaJoselito Nascimento
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSThiago Rodrigues
 
Gentoo por marcelo rocha
Gentoo por marcelo rochaGentoo por marcelo rocha
Gentoo por marcelo rochaSENAC RIO
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...iMasters
 
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Ricardo Valeriano
 
Aula04 phonegap componentes
Aula04 phonegap componentesAula04 phonegap componentes
Aula04 phonegap componentesRoberson Alves
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Flávio Ribeiro
 
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas
Proteja sua Hovercraft: Mantendo sua nave livre dos SentinelasProteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas
Proteja sua Hovercraft: Mantendo sua nave livre dos SentinelasAlexandro Silva
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!magnunleno
 
JavaScript ninja com jQuery
JavaScript ninja com jQueryJavaScript ninja com jQuery
JavaScript ninja com jQueryReinaldo Junior
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)Rudá Moura
 

Similaire à [Android devcamp] Android Bootcamp – 2012 (20)

Introdução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtivaIntrodução a linguagem Python: simples e produtiva
Introdução a linguagem Python: simples e produtiva
 
Aplicativos Multiplataforma Baseados em Firefox OS
Aplicativos Multiplataforma Baseados em Firefox OSAplicativos Multiplataforma Baseados em Firefox OS
Aplicativos Multiplataforma Baseados em Firefox OS
 
Docker para testers - Um passeio fora da caixa
Docker para testers - Um passeio fora da caixaDocker para testers - Um passeio fora da caixa
Docker para testers - Um passeio fora da caixa
 
Suporte em TI para Desktop com Software Livre - EXPOTEC 2016
Suporte em TI para Desktop com Software Livre - EXPOTEC 2016Suporte em TI para Desktop com Software Livre - EXPOTEC 2016
Suporte em TI para Desktop com Software Livre - EXPOTEC 2016
 
Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015Live Tiles e Background Executions - TDC SP 2015
Live Tiles e Background Executions - TDC SP 2015
 
Suporte em TI com Software Livre
Suporte em TI com Software LivreSuporte em TI com Software Livre
Suporte em TI com Software Livre
 
Python Para Maemo
Python Para MaemoPython Para Maemo
Python Para Maemo
 
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
Desenvolvimento PHP com Vagrant - PHP Conference Brasil 2012
 
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosaChrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
Chrome Apps e NodeWebkit: traga seu webapp para o Desktop - #outubrorosa
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
Minicurso groovy grails
Minicurso groovy grailsMinicurso groovy grails
Minicurso groovy grails
 
Gentoo por marcelo rocha
Gentoo por marcelo rochaGentoo por marcelo rocha
Gentoo por marcelo rocha
 
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
JS Experience 2017 - Utilizando a virtualização para simplificar o desenvolvi...
 
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
Qcon SP 2012, 5 (ou mais) coisas que você gostaria de saber sobre o iOS e o O...
 
Aula04 phonegap componentes
Aula04 phonegap componentesAula04 phonegap componentes
Aula04 phonegap componentes
 
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6Implementação de Aplicações Móveis e Jogos com Python - Aula 6
Implementação de Aplicações Móveis e Jogos com Python - Aula 6
 
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas
Proteja sua Hovercraft: Mantendo sua nave livre dos SentinelasProteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas
Proteja sua Hovercraft: Mantendo sua nave livre dos Sentinelas
 
Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!Adeus Wordpress. Ola Pelican!
Adeus Wordpress. Ola Pelican!
 
JavaScript ninja com jQuery
JavaScript ninja com jQueryJavaScript ninja com jQuery
JavaScript ninja com jQuery
 
Python No Terra (2006-12-21)
Python No Terra  (2006-12-21)Python No Terra  (2006-12-21)
Python No Terra (2006-12-21)
 

Plus de Douglas Drumond

Android Wear – IO Extended
Android Wear – IO ExtendedAndroid Wear – IO Extended
Android Wear – IO ExtendedDouglas Drumond
 
[MobCamp 2014] Android Wear and Google Glass
[MobCamp 2014] Android Wear and Google Glass[MobCamp 2014] Android Wear and Google Glass
[MobCamp 2014] Android Wear and Google GlassDouglas Drumond
 
[DevCamp 2014] Melhorando a Usabilidade com Animações
[DevCamp 2014] Melhorando a Usabilidade com Animações[DevCamp 2014] Melhorando a Usabilidade com Animações
[DevCamp 2014] Melhorando a Usabilidade com AnimaçõesDouglas Drumond
 
[DevCamp 2014] Melhorando a usabilidade com animações
[DevCamp 2014] Melhorando a usabilidade com animações[DevCamp 2014] Melhorando a usabilidade com animações
[DevCamp 2014] Melhorando a usabilidade com animaçõesDouglas Drumond
 
[Unicamp Fórum Permanente] Android Faixa Branca – 2011
[Unicamp Fórum Permanente] Android Faixa Branca – 2011[Unicamp Fórum Permanente] Android Faixa Branca – 2011
[Unicamp Fórum Permanente] Android Faixa Branca – 2011Douglas Drumond
 
[MO901] Android 下忍 – 2011
[MO901] Android 下忍 – 2011[MO901] Android 下忍 – 2011
[MO901] Android 下忍 – 2011Douglas Drumond
 
[FLISOL] Embelezando o Android – 2013
[FLISOL] Embelezando o Android – 2013[FLISOL] Embelezando o Android – 2013
[FLISOL] Embelezando o Android – 2013Douglas Drumond
 
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013Douglas Drumond
 
[Faat] android faixa branca – 2012
[Faat] android faixa branca – 2012[Faat] android faixa branca – 2012
[Faat] android faixa branca – 2012Douglas Drumond
 
[DevCamp] Layouts Flexíveis no Android – 2013
[DevCamp] Layouts Flexíveis no Android – 2013[DevCamp] Layouts Flexíveis no Android – 2013
[DevCamp] Layouts Flexíveis no Android – 2013Douglas Drumond
 
[Unicamp] curso vim – 2010
[Unicamp] curso vim – 2010[Unicamp] curso vim – 2010
[Unicamp] curso vim – 2010Douglas Drumond
 

Plus de Douglas Drumond (12)

Android Wear – IO Extended
Android Wear – IO ExtendedAndroid Wear – IO Extended
Android Wear – IO Extended
 
Android wear (coding)
Android wear (coding)Android wear (coding)
Android wear (coding)
 
[MobCamp 2014] Android Wear and Google Glass
[MobCamp 2014] Android Wear and Google Glass[MobCamp 2014] Android Wear and Google Glass
[MobCamp 2014] Android Wear and Google Glass
 
[DevCamp 2014] Melhorando a Usabilidade com Animações
[DevCamp 2014] Melhorando a Usabilidade com Animações[DevCamp 2014] Melhorando a Usabilidade com Animações
[DevCamp 2014] Melhorando a Usabilidade com Animações
 
[DevCamp 2014] Melhorando a usabilidade com animações
[DevCamp 2014] Melhorando a usabilidade com animações[DevCamp 2014] Melhorando a usabilidade com animações
[DevCamp 2014] Melhorando a usabilidade com animações
 
[Unicamp Fórum Permanente] Android Faixa Branca – 2011
[Unicamp Fórum Permanente] Android Faixa Branca – 2011[Unicamp Fórum Permanente] Android Faixa Branca – 2011
[Unicamp Fórum Permanente] Android Faixa Branca – 2011
 
[MO901] Android 下忍 – 2011
[MO901] Android 下忍 – 2011[MO901] Android 下忍 – 2011
[MO901] Android 下忍 – 2011
 
[FLISOL] Embelezando o Android – 2013
[FLISOL] Embelezando o Android – 2013[FLISOL] Embelezando o Android – 2013
[FLISOL] Embelezando o Android – 2013
 
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013
[FLISOL] Android Faixa Branca (Iniciando no Android) – 2013
 
[Faat] android faixa branca – 2012
[Faat] android faixa branca – 2012[Faat] android faixa branca – 2012
[Faat] android faixa branca – 2012
 
[DevCamp] Layouts Flexíveis no Android – 2013
[DevCamp] Layouts Flexíveis no Android – 2013[DevCamp] Layouts Flexíveis no Android – 2013
[DevCamp] Layouts Flexíveis no Android – 2013
 
[Unicamp] curso vim – 2010
[Unicamp] curso vim – 2010[Unicamp] curso vim – 2010
[Unicamp] curso vim – 2010
 

[Android devcamp] Android Bootcamp – 2012