SlideShare uma empresa Scribd logo
1 de 92
Baixar para ler offline
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-fundador da Y-MAX Consultoria
em TI

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
eee19.com
@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.git ;
repo sync ; make"
http://twitter.com/#!/arubin/status/27808662429

eee19.com
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!
• Exemplo: carga de bateria
eee19.com
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

eee19.com
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.com
Activity
onCreate()
Visível

onStart()
Primeiro plano

onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

eee19.com
Activity
onCreate()
Visível

onStart()
Primeiro plano

onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown
eee19.com
Activity
Ciclo de vida completo

onCreate()

Visível

onStart()
Primeiro plano

onRestart()

onResume()

em execução

onPause()

onStop()

onDestroy()

shutdown
eee19.com
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
onRestart()!

• Colocar logs nesses métodos e observar o
que acontece

eee19.com
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"
              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
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
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.OnFocusChangeListener!
• onKey() → View.OnKeyListener!
• onTouch() → View.OnTouchListener!
• onCreateContextMenu() →
View.OnCreateContextMenuListener

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/
    ...
}
eee19.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/
}

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

• Serve para iniciar activities, services e
broadcast receivers

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
eee19.com
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 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
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
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

Mais conteúdo relacionado

Semelhante a Android Developer Documentação

jQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com JavascriptjQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com JavascriptLuiz Oliveira
 
Descomplicando o Android
Descomplicando o AndroidDescomplicando o Android
Descomplicando o AndroidHeider Lopes
 
Kyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareKyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareFábio Nogueira de Lucena
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google AndroidIury Teixeira
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Rodrigo Urubatan
 
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...Impacta Eventos
 
Introdução Silverlight Windows Phone
Introdução Silverlight Windows PhoneIntrodução Silverlight Windows Phone
Introdução Silverlight Windows PhoneNuno Luz
 
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecerInterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouqueceriMasters
 
Curso de android
Curso de androidCurso de android
Curso de androidflaviokreis
 
[Faat] android faixa branca – 2012
[Faat] android faixa branca – 2012[Faat] android faixa branca – 2012
[Faat] android faixa branca – 2012Douglas Drumond
 
Intervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileIntervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileVitor Albuquerque
 
Criando aplicações em Android brincando de quebra-cabeça!
Criando aplicações em Android brincando de quebra-cabeça!Criando aplicações em Android brincando de quebra-cabeça!
Criando aplicações em Android brincando de quebra-cabeça!Comunidade Tá safo!
 
Android DevConference - Gerenciando a publicação e atualização de 450 apps se...
Android DevConference - Gerenciando a publicação e atualização de 450 apps se...Android DevConference - Gerenciando a publicação e atualização de 450 apps se...
Android DevConference - Gerenciando a publicação e atualização de 450 apps se...iMasters
 

Semelhante a Android Developer Documentação (20)

jQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com JavascriptjQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com Javascript
 
Pdm -final
Pdm  -finalPdm  -final
Pdm -final
 
Descomplicando o Android
Descomplicando o AndroidDescomplicando o Android
Descomplicando o Android
 
Kyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de softwareKyrios: Infra-estrutura livre para desenvolvimento de software
Kyrios: Infra-estrutura livre para desenvolvimento de software
 
Aulas Google Android
Aulas Google AndroidAulas Google Android
Aulas Google Android
 
Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_Desenvolvendo aplicacoes mobile_com_html_css_
Desenvolvendo aplicacoes mobile_com_html_css_
 
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
Explorando o Mundo Apple, Desenvolvendo Aplicativos para IOS - Felipe Martins...
 
Introdução Silverlight Windows Phone
Introdução Silverlight Windows PhoneIntrodução Silverlight Windows Phone
Introdução Silverlight Windows Phone
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecerInterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
InterCon 2016 - Gerenciando deploy e atualização de 450 apps sem enlouquecer
 
Phonegap
PhonegapPhonegap
Phonegap
 
Curso de android
Curso de androidCurso de android
Curso de android
 
[Faat] android faixa branca – 2012
[Faat] android faixa branca – 2012[Faat] android faixa branca – 2012
[Faat] android faixa branca – 2012
 
Phonegap
PhonegapPhonegap
Phonegap
 
Mulheres na tecnologia 2015
Mulheres na tecnologia 2015Mulheres na tecnologia 2015
Mulheres na tecnologia 2015
 
Minicurso2013
Minicurso2013Minicurso2013
Minicurso2013
 
Intervalo Técnico - QG Mobile
Intervalo Técnico - QG MobileIntervalo Técnico - QG Mobile
Intervalo Técnico - QG Mobile
 
Criando aplicações em Android brincando de quebra-cabeça!
Criando aplicações em Android brincando de quebra-cabeça!Criando aplicações em Android brincando de quebra-cabeça!
Criando aplicações em Android brincando de quebra-cabeça!
 
Android DevConference - Gerenciando a publicação e atualização de 450 apps se...
Android DevConference - Gerenciando a publicação e atualização de 450 apps se...Android DevConference - Gerenciando a publicação e atualização de 450 apps se...
Android DevConference - Gerenciando a publicação e atualização de 450 apps se...
 
Mergulhando no ecossistema .NET
Mergulhando no ecossistema .NETMergulhando no ecossistema .NET
Mergulhando no ecossistema .NET
 

Mais 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
 
[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
 
[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
 
[Android devcamp] Android Bootcamp – 2012
[Android devcamp] Android Bootcamp – 2012[Android devcamp] Android Bootcamp – 2012
[Android devcamp] Android Bootcamp – 2012Douglas Drumond
 
[Unicamp] curso vim – 2010
[Unicamp] curso vim – 2010[Unicamp] curso vim – 2010
[Unicamp] curso vim – 2010Douglas Drumond
 

Mais de Douglas Drumond (10)

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
 
[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
 
[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
 
[Android devcamp] Android Bootcamp – 2012
[Android devcamp] Android Bootcamp – 2012[Android devcamp] Android Bootcamp – 2012
[Android devcamp] Android Bootcamp – 2012
 
[Unicamp] curso vim – 2010
[Unicamp] curso vim – 2010[Unicamp] curso vim – 2010
[Unicamp] curso vim – 2010
 

Android Developer Documentação