Introdução à programação em
          Android
               Guilherme Callegaro Sesterheim
GuilhermeSesterheim

•   Consultor e desenvolvedor ABAP da ilegra

•   Possui formação em Análise e
    Desenvolvimento de Sistemas pela Unisinos

•   Mestrando em Computação Aplicada na
    Unisinos

•   Experiência como desenvolvedor Java e na
    plataforma Android
Agenda

•   Quem é a ilegra?

•   Android e smartphones

•   Fragmentação de versões Android

•   Ambiente de desenvolvimento

•   Testes de aplicativos

•   Publicando aplicativos

•   Desenvolvimento
Android

  O que é:
– Sistema operacional móvel baseado em Linux
– Adquirido pela Google em 2005 e lançado em 2008
– Desenvolvimento de aplicações é baseado em Java / C++ / C / C# e
  Python
– Curiosidade: possui 12 milhões de linhas de código, divididas entre
  XML, C, Java e C++
Android

                  O Android em 2006
– Sem touch-screen
– Com teclado físico
Android
Android

-   Em setembro de 2012 o Android Market possuía mais de 675 mil aplicativos
    disponíveis (em maio eram 450 mil e em maio de 2011 eram 200 mil). Também em
    setembro alcançaram a marca de 25 bilhões de downloads de aplicativos.

-   Todo mês, mais de 20 mil novos aplicativos são enviados.

-   (imagem) em Dezembro de 2011, Apple tinha quase 450 mil aplicativos, e Google
    quase 350 mil

-   A cada dia, 900 mil dispositivos Android são ativados. Espera-se que este
    número chegue a 1,5 milhão e mantenha-se estável a partir de então em 2014
Android
                                 Perspectivas para desenvolvedores

                             - O Market vende mais do que a App Store
                             desde março de 2011
                             - Desde janeiro de 2011, é permitida a
                             inclusão de pagamentos dentro de
                             aplicativos
                             - Projeção de lucro para desenvolvedores
                             independentes x empresas

                             Oportunidades de trabalho com Android:
                                  –   Sites de free-lancers
                                  –   Projetos open source


                             Empregos fixos: entre R$ 2000,00 para
                             desenvolvedores e R$ 8000,00 para
                             analistas

                             - Visibilidade
Imagem desatualizada
Android
                      Tendências encontradas

   – Vendas de aplicativos na China cresce exponencialmente,
     tendendo a ultrapassar os EUA como maior comprador de apps*
   – Grandes jogos baixam seus preços cada vez mais
   – 91% das grandes companhias já têm aplicativos para pelo
     menos uma plataforma, e estudam a criação de aplicativos para
     todas
   – Entrada do WP




* Chineses não consomem aplicativos Android
Android
Android
                           Smartphones
– Marcos:
     Nov 2009 – Lançamento do Motorola Milestone
     Jun 2010 – Lançamento do Samsung Galaxy S
     Maio 2012 – Lançamento do Samsung Galaxy SIII
– Top Android phones (10/2012):
     Motorola - Droid Razr HD (bateria)
     Samsung - Galaxy SIII
     Samsung - Galaxy Nexus (Galaxy X no Brasil)
     LG Optimus G (ainda não disponível no Brasil)
     HTC - One X+ (ainda não disponível no Brasil)
– Curiosidades:
   • O lucro da HTC triplicou no primeiro trimestre de 2011 em função da
     demanda por Androids, mas já apresenta forte queda
   • A Motorola estudava desenvolvimento de um mobile OS próprio
   • Nokia mantem prejuizos com o Windows Phone
   • Microsoft lucra mais com Android do que com WP
Android

                   Smartphones de baixo custo

- Samsung Galaxy 5 – 2.1 (R$ 300,00)
- Sony Ericsson Xperia X10 – 2.1 (R$ 300,00)
Android

Problemas do Market
•   Aplicativos maliciosos – roubo de
    informações
•   Em março de 2011 foram descobertos e
    removidos 52 aplicativos virais do
    Android Market. Eles representavam
    diversas ameaças aos usuários,
    responsáveis pelos mais de 50 mil
    downloads (escondidos em
    calculadoras, jogos de xadrez, entre
    outros)
•   Identificado um bug ao acessar páginas
    HTML que resetava o aparelho para o
    padrão de fábrica
•   Iniciada a utilização do Google remote
    kill, implementado desde 2008
Fragmentação de versões do Android

Fragmentação de versões operando em smartphones (04/2012)
Fragmentação de versões do Android

         Tentativa de diminuição da fragmentação
Ainda não é possível medir a diminuição da fragmentação ocorrida
com o lançamento do 4.0 – ICS, que é compatível com smarthpones e
tablets

Foi feito um acordo entre fabricantes e Google para que todos os
novos modelos de smartphone sejam atualizados por pelo menos 18
meses, mas até o momento as fabricantes não o cumprem
Ambiente de desenvolvimento

         Baixando o SDK
Ambiente de desenvolvimento
Escolhendo os SDK que serão instalados
Ambiente de desenvolvimento

            Montando o ambiente de desenvolvimento

1 – Baixar o eclipse em eclipse.org/downloads

2 – Instalar o ADT (Android development tools) plugin
Ambiente de desenvolvimento
Ambiente de desenvolvimento
Ambiente de desenvolvimento

      Montando o ambiente de desenvolvimento – alternativa

1 – Baixar o plugin diretamente no site do Android



2 – Repetir o procedimento mostrado anteriormente, porém escolhendo o
arquivo localmente




Após a instalação, é necessário indicar qual SDK deverá ser utilizado através
do menu Window > Preferences > Android

IMPORTANTE: é necessário verificar periodicamente as atualizações, através do menu
Help > Check for Updates, ou através do site do Android
Ambiente de desenvolvimento
                      Motodev studio
 –Gratuito
 –Não há restrição a aparelhos da Motorola
 –Principais diferenciais:
   * App validator (permissões, e uso de
 código)
   * Code snippets (adicionar facilmente
 códigos já construídos)
   * Application signing automático
   * Suporta o Android NDK (desenvolvimento
  em C e C++)
   * Screen capture de dispositivos emulados e físicos*
   * Tradutor de aplicativos nativo
Ambiente de desenvolvimento

      Construtor de interface
Testes de Aplicativos

Criando dispositivos de teste
Testes de Aplicativos
       Emulador
Testes de Aplicativos

              ADB – Android Debug Bridge

- Localizado em <sdk-path>/platform-tools/
- Pode receber instruções via linha de comando
Publicando Aplicativos

Criando conta no Android Market
Publicando Aplicativos


- Inserindo dados
comerciais na conta do
Google Checkout para
poder vender aplicativos

- É permitido o cadastro de
pessoas físicas
Publicando Aplicativos

Atrelando conta do AdSense ao Google Checkout
Publicando Aplicativos

       Manage board
Publicando Aplicativos

  Passos para publicar um aplicativo:

1. Enviando o .apk
2. Enviar recursos para divulgação
3. Descrever detalhes sobre a aplicação
4. Opções de publicação
5. Informações para contato a ser divulgada aos usuários
6. Autorização ao Google
Publicando Aplicativos
Enviar recursos para divulgação
Publicando Aplicativos

Descrever detalhes sobre a aplicação
Publicando Aplicativos

Descrever detalhes sobre a aplicação / Opções de
                  publicação
Publicando Aplicativos

– Informações para contato a ser divulgada aos usuários
– Autorização ao Google
Desenvolvimento

                      Fundamentals

- Os aplicativos de Android são instalados através de um .apk
- A partir do momento em que é instalado, cada aplicativo do Android
tem sua sandbox (baseia-se no conceito de multi-usuários do Linux)
- Cada processo recebe suas permissões específicas
- Cada processo executa dentro de uma VM
- Cada aplicação consegue acessar apenas o que foi determinado
através do manifest
Desenvolvimento

     Manifest
Desenvolvimento

                     Debugging

- ADB – Android Debug Bridge
- AVD – Android Virtual Device
- Logcat
- Captura de telas
- Debug.startMethodTracing(String fileName)
Desenvolvimento

                             Activities
- Uma Activity é um componente da aplicação (uma classe), que proverá uma
tela com a qual o usuário poderá interagir

- Geralmente o desenho ocupa a tela inteira, mas ela pode ser diminuída para
ser feito o efeito de flutuação sobre outras telas já existentes

- Implementando métodos obrigatórios:
    onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy()

- Intents:
     ACTION_VIEW
     ACTION_DIAL
     ACTION_EDIT
     ACTION_MAIN
Desenvolvimento

- Definindo a tela que será exibida:
setContentView( String
codigoArquivoXML)
- Iniciando sub atividade:
startActivity(Intent nova)
- Capturando resultado de uma
 atividade: startActivityForResult() /
 onActivityResult()
- Finalizando uma atividade: finish() /
finishActivity()
- Guardando o estado de uma Activity –
onSaveInstanceState() /
onRestoreInstanceState()
- Outros eventos importantes:
onCreateOptionsMenu, onKeyDown,
onMenuItemSelected, onTouchEvent,
onWindowFocusChanged
Desenvolvimento


                       Services

- São atividades que operam em background por um longo tempo
e não provêem interface para o usuário

- É necessário declarar os Services, que a aplicação poderá
disparar, no manifest

- Pode ser executado, desacoplado, e capturado futuramente

- onCreate(), onStartCommand(), onBind(), onUnbind(),
onRebind(), onDestroy()
Desenvolvimento
Desenvolvimento

 UI – User Interface
Desenvolvimento


                     Data Storage

- Shared Preferences – dados de usuário / internos do smartphone
- Internal storage
     MODE_PRIVATE
     MODE_APPEND
     MODE_WORLD_READABLE
     MODE_WORLD_WRITABLE

- External storage
     Environment.getExternalStorageState()
     getExternalStoragePublicDirectory() –
     images/music/ringtones/videos

- SQLite databases
- Network connection
Desenvolvimento


                            Security
- Nenhuma aplicação tem permissão para interferir em outros processos,
outras aplicações, ou informações confidenciais do sistema
- Application signing
- Permissões
     Existem 115 diferentes tipos de permissões
Desenvolvimento

                          Widgets
- Manifest




- AppWidgetProviderInfo




- onUpdate() onDeleted(), onEnabled(), onDisabled(), onReceive()
Perguntas




Obrigado!
 Guilherme Sesterheim
 guilherme.sesterheim@ilegra.com
            @guisester
facebook.com/guilherme.sesterheim

Introdução a programação em Android

  • 1.
    Introdução à programaçãoem Android Guilherme Callegaro Sesterheim
  • 2.
    GuilhermeSesterheim • Consultor e desenvolvedor ABAP da ilegra • Possui formação em Análise e Desenvolvimento de Sistemas pela Unisinos • Mestrando em Computação Aplicada na Unisinos • Experiência como desenvolvedor Java e na plataforma Android
  • 3.
    Agenda • Quem é a ilegra? • Android e smartphones • Fragmentação de versões Android • Ambiente de desenvolvimento • Testes de aplicativos • Publicando aplicativos • Desenvolvimento
  • 9.
    Android Oque é: – Sistema operacional móvel baseado em Linux – Adquirido pela Google em 2005 e lançado em 2008 – Desenvolvimento de aplicações é baseado em Java / C++ / C / C# e Python – Curiosidade: possui 12 milhões de linhas de código, divididas entre XML, C, Java e C++
  • 10.
    Android O Android em 2006 – Sem touch-screen – Com teclado físico
  • 11.
  • 12.
    Android - Em setembro de 2012 o Android Market possuía mais de 675 mil aplicativos disponíveis (em maio eram 450 mil e em maio de 2011 eram 200 mil). Também em setembro alcançaram a marca de 25 bilhões de downloads de aplicativos. - Todo mês, mais de 20 mil novos aplicativos são enviados. - (imagem) em Dezembro de 2011, Apple tinha quase 450 mil aplicativos, e Google quase 350 mil - A cada dia, 900 mil dispositivos Android são ativados. Espera-se que este número chegue a 1,5 milhão e mantenha-se estável a partir de então em 2014
  • 13.
    Android Perspectivas para desenvolvedores - O Market vende mais do que a App Store desde março de 2011 - Desde janeiro de 2011, é permitida a inclusão de pagamentos dentro de aplicativos - Projeção de lucro para desenvolvedores independentes x empresas Oportunidades de trabalho com Android: – Sites de free-lancers – Projetos open source Empregos fixos: entre R$ 2000,00 para desenvolvedores e R$ 8000,00 para analistas - Visibilidade Imagem desatualizada
  • 14.
    Android Tendências encontradas – Vendas de aplicativos na China cresce exponencialmente, tendendo a ultrapassar os EUA como maior comprador de apps* – Grandes jogos baixam seus preços cada vez mais – 91% das grandes companhias já têm aplicativos para pelo menos uma plataforma, e estudam a criação de aplicativos para todas – Entrada do WP * Chineses não consomem aplicativos Android
  • 15.
  • 16.
    Android Smartphones – Marcos: Nov 2009 – Lançamento do Motorola Milestone Jun 2010 – Lançamento do Samsung Galaxy S Maio 2012 – Lançamento do Samsung Galaxy SIII – Top Android phones (10/2012): Motorola - Droid Razr HD (bateria) Samsung - Galaxy SIII Samsung - Galaxy Nexus (Galaxy X no Brasil) LG Optimus G (ainda não disponível no Brasil) HTC - One X+ (ainda não disponível no Brasil) – Curiosidades: • O lucro da HTC triplicou no primeiro trimestre de 2011 em função da demanda por Androids, mas já apresenta forte queda • A Motorola estudava desenvolvimento de um mobile OS próprio • Nokia mantem prejuizos com o Windows Phone • Microsoft lucra mais com Android do que com WP
  • 17.
    Android Smartphones de baixo custo - Samsung Galaxy 5 – 2.1 (R$ 300,00) - Sony Ericsson Xperia X10 – 2.1 (R$ 300,00)
  • 18.
    Android Problemas do Market • Aplicativos maliciosos – roubo de informações • Em março de 2011 foram descobertos e removidos 52 aplicativos virais do Android Market. Eles representavam diversas ameaças aos usuários, responsáveis pelos mais de 50 mil downloads (escondidos em calculadoras, jogos de xadrez, entre outros) • Identificado um bug ao acessar páginas HTML que resetava o aparelho para o padrão de fábrica • Iniciada a utilização do Google remote kill, implementado desde 2008
  • 20.
    Fragmentação de versõesdo Android Fragmentação de versões operando em smartphones (04/2012)
  • 21.
    Fragmentação de versõesdo Android Tentativa de diminuição da fragmentação Ainda não é possível medir a diminuição da fragmentação ocorrida com o lançamento do 4.0 – ICS, que é compatível com smarthpones e tablets Foi feito um acordo entre fabricantes e Google para que todos os novos modelos de smartphone sejam atualizados por pelo menos 18 meses, mas até o momento as fabricantes não o cumprem
  • 23.
  • 24.
    Ambiente de desenvolvimento Escolhendoos SDK que serão instalados
  • 25.
    Ambiente de desenvolvimento Montando o ambiente de desenvolvimento 1 – Baixar o eclipse em eclipse.org/downloads 2 – Instalar o ADT (Android development tools) plugin
  • 26.
  • 27.
  • 28.
    Ambiente de desenvolvimento Montando o ambiente de desenvolvimento – alternativa 1 – Baixar o plugin diretamente no site do Android 2 – Repetir o procedimento mostrado anteriormente, porém escolhendo o arquivo localmente Após a instalação, é necessário indicar qual SDK deverá ser utilizado através do menu Window > Preferences > Android IMPORTANTE: é necessário verificar periodicamente as atualizações, através do menu Help > Check for Updates, ou através do site do Android
  • 29.
    Ambiente de desenvolvimento Motodev studio –Gratuito –Não há restrição a aparelhos da Motorola –Principais diferenciais: * App validator (permissões, e uso de código) * Code snippets (adicionar facilmente códigos já construídos) * Application signing automático * Suporta o Android NDK (desenvolvimento em C e C++) * Screen capture de dispositivos emulados e físicos* * Tradutor de aplicativos nativo
  • 30.
    Ambiente de desenvolvimento Construtor de interface
  • 32.
    Testes de Aplicativos Criandodispositivos de teste
  • 33.
  • 34.
    Testes de Aplicativos ADB – Android Debug Bridge - Localizado em <sdk-path>/platform-tools/ - Pode receber instruções via linha de comando
  • 36.
  • 37.
    Publicando Aplicativos - Inserindodados comerciais na conta do Google Checkout para poder vender aplicativos - É permitido o cadastro de pessoas físicas
  • 38.
    Publicando Aplicativos Atrelando contado AdSense ao Google Checkout
  • 39.
  • 40.
    Publicando Aplicativos Passos para publicar um aplicativo: 1. Enviando o .apk 2. Enviar recursos para divulgação 3. Descrever detalhes sobre a aplicação 4. Opções de publicação 5. Informações para contato a ser divulgada aos usuários 6. Autorização ao Google
  • 41.
  • 42.
  • 43.
    Publicando Aplicativos Descrever detalhessobre a aplicação / Opções de publicação
  • 44.
    Publicando Aplicativos – Informaçõespara contato a ser divulgada aos usuários – Autorização ao Google
  • 46.
    Desenvolvimento Fundamentals - Os aplicativos de Android são instalados através de um .apk - A partir do momento em que é instalado, cada aplicativo do Android tem sua sandbox (baseia-se no conceito de multi-usuários do Linux) - Cada processo recebe suas permissões específicas - Cada processo executa dentro de uma VM - Cada aplicação consegue acessar apenas o que foi determinado através do manifest
  • 47.
  • 48.
    Desenvolvimento Debugging - ADB – Android Debug Bridge - AVD – Android Virtual Device - Logcat - Captura de telas - Debug.startMethodTracing(String fileName)
  • 49.
    Desenvolvimento Activities - Uma Activity é um componente da aplicação (uma classe), que proverá uma tela com a qual o usuário poderá interagir - Geralmente o desenho ocupa a tela inteira, mas ela pode ser diminuída para ser feito o efeito de flutuação sobre outras telas já existentes - Implementando métodos obrigatórios: onCreate(), onStart(), onResume(), onPause(), onStop(), onDestroy() - Intents: ACTION_VIEW ACTION_DIAL ACTION_EDIT ACTION_MAIN
  • 50.
    Desenvolvimento - Definindo atela que será exibida: setContentView( String codigoArquivoXML) - Iniciando sub atividade: startActivity(Intent nova) - Capturando resultado de uma atividade: startActivityForResult() / onActivityResult() - Finalizando uma atividade: finish() / finishActivity() - Guardando o estado de uma Activity – onSaveInstanceState() / onRestoreInstanceState() - Outros eventos importantes: onCreateOptionsMenu, onKeyDown, onMenuItemSelected, onTouchEvent, onWindowFocusChanged
  • 51.
    Desenvolvimento Services - São atividades que operam em background por um longo tempo e não provêem interface para o usuário - É necessário declarar os Services, que a aplicação poderá disparar, no manifest - Pode ser executado, desacoplado, e capturado futuramente - onCreate(), onStartCommand(), onBind(), onUnbind(), onRebind(), onDestroy()
  • 52.
  • 53.
    Desenvolvimento UI –User Interface
  • 54.
    Desenvolvimento Data Storage - Shared Preferences – dados de usuário / internos do smartphone - Internal storage MODE_PRIVATE MODE_APPEND MODE_WORLD_READABLE MODE_WORLD_WRITABLE - External storage Environment.getExternalStorageState() getExternalStoragePublicDirectory() – images/music/ringtones/videos - SQLite databases - Network connection
  • 55.
    Desenvolvimento Security - Nenhuma aplicação tem permissão para interferir em outros processos, outras aplicações, ou informações confidenciais do sistema - Application signing - Permissões Existem 115 diferentes tipos de permissões
  • 56.
    Desenvolvimento Widgets - Manifest - AppWidgetProviderInfo - onUpdate() onDeleted(), onEnabled(), onDisabled(), onReceive()
  • 59.
    Perguntas Obrigado! Guilherme Sesterheim guilherme.sesterheim@ilegra.com @guisester facebook.com/guilherme.sesterheim