Introdução à programação para a plataforma Android Cursos de Verão na Católica 2010 Jorge C. S. Cardoso, Luís Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt
Conteúdo Mais alguns conceitos Java O que é o Android Guia desenvolvimento, APIs Instalação SDK e Plugin Eclipse Estrutura de um projecto Android no Eclipse Ciclo de vida de uma aplicação Alguns controlos (caixa de texto, botão, checkbox, slider)  Aplicação exemplo: Enviar um SMS  Aplicação exemplo: Calculadora de fracções
Mais alguns conceitos Java: Packages Packages  Os packages são uma organização hierárquica de classes em Java Um package agrupa classes relacionadas  http://download-llnw.oracle.com/javase/1.4.2/docs/api/ Para usarmos as classes de um determinado package temos de indicar explicitamente (no ficheiro da classe) que queremos utilizar uma classe concreta ou todas as classes desse package. import java.math.*; Todos os ficheiros importam automaticamente o package java.lang.*;
Mais alguns conceitos Java: Packages As nossas classes também têm de ficar associadas a uma package (Se não o fizermos explicitamente, ficam associadas a uma package default vazia) Normalmente, usa-se uma estrutura tipo nomes de domínio da internet, invertida: eu.jorgecardoso.cvc2010.Veiculo (No nosso computador, cada uma das palavras é mapeada no nome de uma pasta eu/jorgecardoso/cvc2010/Veiculo.java )   APIs / Documentação
O que é o Android "Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The  Android SDK  provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language." -  http://developer.android.com/guide/basics/what-is-android.html - Sistema operativo com kernel Linux - Framework aplicacional baseado em Java - Máquina virtual Dalvik (optimizada para dispositivos móveis)
Bye, bye, Apple :) http://www.bbc.co.uk/news/technology-10839034
Guia de desenvolvimento, APIs http://developer.android.com/guide/index.html http://developer.android.com/reference/packages.html
Desenvolver aplicações Android em Eclipse Eclipse:  http://www.eclipse.org/ É um ambiente integrado de desenvolvimento (IDE); editor, compilador, debugger, referência, etc Android SDK:  http://developer.android.com/sdk/index.html Bibliotecas, ferramentas e emulador Android Plugin Android para Eclipse:  http://developer.android.com/sdk/eclipse-adt.html Acesso às bibliotecas, ferramentas e emulador a partir do Eclipse
Instalação SDK e Plugin SDK Descarregar (link no slide anterior) Descompactar e copiar para qualquer sítio no disco. Plugin No eclipse ir a Help -> Install new software Adicionar o site  https://dl-ssl.google.com/android/eclipse/   Marcar "Developer tools" e instalar Depois de instalado o plugin Ir a Window -> Android SDK and AVD Manager -> Available packages  Marcar e instalar
Criação emulador Window -> Android SDK and AVD Manager -> Virtual Devices New  Seleccionar o dispositivo  Start     
Criar um projecto Android File -> New -> Project :  Android -> Project Escolher um "Build Target" Definir : "Application name" (qualquer coisa),  "Package name" (do género com.jorge.android),  "Create Activity" (.NomeDaClasse) e  "Min SDK Version" (é um valor inteiro da coluna API no Build Target)
Estrutura de um projecto Android no Eclipse assets Ficheiros externos que a nossa aplicação usa bin O projecto compilado  gen.com.jorge R.java  É gerado automaticamente e contém identificadores de recursos res Recursos (imagens, texto e layout)  src O nosso código fonte. É criado um esqueleto automaticamente  AndroidManifest.xml Definições da aplicação Não vamos mexer
Ciclo de vida de uma aplicação Android Um bocado mais complexa do que o ciclo de vida de uma aplicação desktop... http://developer.android.com/guide/topics/fundamentals.html#actlife
Activity A classe Activity é a classe que implementa o ciclo de vida descrito e serve de base a uma aplicação. Todas as aplicações são subclasses de Activity Fazem override dos métodos relativos ao ciclo de vida (que interessarem à aplicação) Definida no package  android.app http://developer.android.com/reference/android/app/Activity.html
Ciclo de vida de uma aplicação Android Ver projecto "android-1"   Abrir a consola   Window -> Show view -> Other : Android -> Logcat
Correr a aplicação no emulador (Se o emulador não estiver a correr)   Window -> Android SDK and AVD Manager -> Virtual Devices : Seleccionar o dispositivo : Start Run
Alguns controlos A classe base para os componentes gráficos num ecrã é a classe View Todos os controlos são subclasses de View: Botões Caixas de texto (label e editável) Scroll Checkbox   Um ecrã de uma aplicação tem, tipicamente, vários componentes, e.g., uma caixa de texto, um botão, uma checkbox, etc. Para criarmos esta estrutura temos de organizar os componentes hierarquicamente Temos de usar componentes que podem conter eles próprios vários componentes: ViewGroup
ViewGroups Um ViewGroup é um painel ao qual podemos adicionar outras Views (ou outros ViewGroup) A classe ViewGroup é ela própria subclasse de View Mas não tem representação visual, apenas serve para organizar os componentes lá dentro Existem diferentes ViewGroup que organizam os componentes de forma diferente
ViewGroups A janela da aplicação apenas tem associada uma única View Normalmente associamos uma ViewGroup (subclasse de View) para podermos associar à ViewGroup todos os outros controlos
Alguns controlos A maior parte dos controlos gráficos estão no package android.widget http://developer.android.com/reference/android/widget/package-summary.html As classes View e ViewGroup estão em   android.view http://developer.android.com/reference/android/view/package-summary.html
Alguns controlos Todos os controlos têm um construtor que necessita de um Context Este parâmetro é a nossa Activity (subclasse indirecta de Context) Ver projecto "android-2"
Eventos de input Para detectarmos eventos relacionados com os controlos (eventos gerados por input do utilizador) temos de associar ao controlo um objecto que escuta as notificações dos eventos em que estamos interessados.  Cada controlo pode definir eventos diferentes e, por isso, classes diferentes que escutam esses eventos.
Eventos de input public class Controlos extends Activity implements OnClickListener {      Button btn;      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);                   // Um botão com o texto 'olá'          btn = new Button(this);          btn.setText("Olá");          // vamos escutar clicks no botão          btn.setOnClickListener(this);                   setContentView(btn);      }      // A interface OnClickListener define apenas este método que temos de implementar      @Override      public void onClick(View view) {          Log.i("Controlos", "Botão pressionado");      } }
Listeners Por exemplo, um Button, gera eventos quando é clicado, enviando notificações para o objecto do tipo OnClickListener que está registado no Button. Ver projecto android-3 Experimentem adicionar outro botão Ver projecto android-4
Exemplo calculadora de fracções Ver projecto FractionCalculator
Exemplo SmsSender Ver projecto SMSSender
Fim Cursos de Verão na Católica 2010 http://porto.ucp.pt/cvc/ Jorge C. S. Cardoso, Luís Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt http://slideshare.net/jorgecardoso (tag: cvc2010) Código fonte:  http://db.tt/AOFOfA2

Introdução à programação para Android

  • 1.
    Introdução à programaçãopara a plataforma Android Cursos de Verão na Católica 2010 Jorge C. S. Cardoso, Luís Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt
  • 2.
    Conteúdo Mais algunsconceitos Java O que é o Android Guia desenvolvimento, APIs Instalação SDK e Plugin Eclipse Estrutura de um projecto Android no Eclipse Ciclo de vida de uma aplicação Alguns controlos (caixa de texto, botão, checkbox, slider)  Aplicação exemplo: Enviar um SMS  Aplicação exemplo: Calculadora de fracções
  • 3.
    Mais alguns conceitosJava: Packages Packages  Os packages são uma organização hierárquica de classes em Java Um package agrupa classes relacionadas  http://download-llnw.oracle.com/javase/1.4.2/docs/api/ Para usarmos as classes de um determinado package temos de indicar explicitamente (no ficheiro da classe) que queremos utilizar uma classe concreta ou todas as classes desse package. import java.math.*; Todos os ficheiros importam automaticamente o package java.lang.*;
  • 4.
    Mais alguns conceitosJava: Packages As nossas classes também têm de ficar associadas a uma package (Se não o fizermos explicitamente, ficam associadas a uma package default vazia) Normalmente, usa-se uma estrutura tipo nomes de domínio da internet, invertida: eu.jorgecardoso.cvc2010.Veiculo (No nosso computador, cada uma das palavras é mapeada no nome de uma pasta eu/jorgecardoso/cvc2010/Veiculo.java )   APIs / Documentação
  • 5.
    O que éo Android "Android is a software stack for mobile devices that includes an operating system, middleware and key applications. The  Android SDK  provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language." -  http://developer.android.com/guide/basics/what-is-android.html - Sistema operativo com kernel Linux - Framework aplicacional baseado em Java - Máquina virtual Dalvik (optimizada para dispositivos móveis)
  • 6.
    Bye, bye, Apple:) http://www.bbc.co.uk/news/technology-10839034
  • 7.
    Guia de desenvolvimento,APIs http://developer.android.com/guide/index.html http://developer.android.com/reference/packages.html
  • 8.
    Desenvolver aplicações Androidem Eclipse Eclipse:  http://www.eclipse.org/ É um ambiente integrado de desenvolvimento (IDE); editor, compilador, debugger, referência, etc Android SDK:  http://developer.android.com/sdk/index.html Bibliotecas, ferramentas e emulador Android Plugin Android para Eclipse:  http://developer.android.com/sdk/eclipse-adt.html Acesso às bibliotecas, ferramentas e emulador a partir do Eclipse
  • 9.
    Instalação SDK ePlugin SDK Descarregar (link no slide anterior) Descompactar e copiar para qualquer sítio no disco. Plugin No eclipse ir a Help -> Install new software Adicionar o site  https://dl-ssl.google.com/android/eclipse/   Marcar "Developer tools" e instalar Depois de instalado o plugin Ir a Window -> Android SDK and AVD Manager -> Available packages  Marcar e instalar
  • 10.
    Criação emulador Window-> Android SDK and AVD Manager -> Virtual Devices New  Seleccionar o dispositivo  Start     
  • 11.
    Criar um projectoAndroid File -> New -> Project :  Android -> Project Escolher um "Build Target" Definir : "Application name" (qualquer coisa),  "Package name" (do género com.jorge.android),  "Create Activity" (.NomeDaClasse) e  "Min SDK Version" (é um valor inteiro da coluna API no Build Target)
  • 12.
    Estrutura de umprojecto Android no Eclipse assets Ficheiros externos que a nossa aplicação usa bin O projecto compilado  gen.com.jorge R.java  É gerado automaticamente e contém identificadores de recursos res Recursos (imagens, texto e layout)  src O nosso código fonte. É criado um esqueleto automaticamente  AndroidManifest.xml Definições da aplicação Não vamos mexer
  • 13.
    Ciclo de vidade uma aplicação Android Um bocado mais complexa do que o ciclo de vida de uma aplicação desktop... http://developer.android.com/guide/topics/fundamentals.html#actlife
  • 14.
    Activity A classeActivity é a classe que implementa o ciclo de vida descrito e serve de base a uma aplicação. Todas as aplicações são subclasses de Activity Fazem override dos métodos relativos ao ciclo de vida (que interessarem à aplicação) Definida no package  android.app http://developer.android.com/reference/android/app/Activity.html
  • 15.
    Ciclo de vidade uma aplicação Android Ver projecto "android-1"   Abrir a consola   Window -> Show view -> Other : Android -> Logcat
  • 16.
    Correr a aplicaçãono emulador (Se o emulador não estiver a correr)   Window -> Android SDK and AVD Manager -> Virtual Devices : Seleccionar o dispositivo : Start Run
  • 17.
    Alguns controlos Aclasse base para os componentes gráficos num ecrã é a classe View Todos os controlos são subclasses de View: Botões Caixas de texto (label e editável) Scroll Checkbox   Um ecrã de uma aplicação tem, tipicamente, vários componentes, e.g., uma caixa de texto, um botão, uma checkbox, etc. Para criarmos esta estrutura temos de organizar os componentes hierarquicamente Temos de usar componentes que podem conter eles próprios vários componentes: ViewGroup
  • 18.
    ViewGroups Um ViewGroup éum painel ao qual podemos adicionar outras Views (ou outros ViewGroup) A classe ViewGroup é ela própria subclasse de View Mas não tem representação visual, apenas serve para organizar os componentes lá dentro Existem diferentes ViewGroup que organizam os componentes de forma diferente
  • 19.
    ViewGroups A janelada aplicação apenas tem associada uma única View Normalmente associamos uma ViewGroup (subclasse de View) para podermos associar à ViewGroup todos os outros controlos
  • 20.
    Alguns controlos Amaior parte dos controlos gráficos estão no package android.widget http://developer.android.com/reference/android/widget/package-summary.html As classes View e ViewGroup estão em   android.view http://developer.android.com/reference/android/view/package-summary.html
  • 21.
    Alguns controlos Todosos controlos têm um construtor que necessita de um Context Este parâmetro é a nossa Activity (subclasse indirecta de Context) Ver projecto "android-2"
  • 22.
    Eventos de inputPara detectarmos eventos relacionados com os controlos (eventos gerados por input do utilizador) temos de associar ao controlo um objecto que escuta as notificações dos eventos em que estamos interessados.  Cada controlo pode definir eventos diferentes e, por isso, classes diferentes que escutam esses eventos.
  • 23.
    Eventos de inputpublic class Controlos extends Activity implements OnClickListener {      Button btn;      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);                   // Um botão com o texto 'olá'          btn = new Button(this);          btn.setText("Olá");          // vamos escutar clicks no botão          btn.setOnClickListener(this);                   setContentView(btn);      }      // A interface OnClickListener define apenas este método que temos de implementar      @Override      public void onClick(View view) {          Log.i("Controlos", "Botão pressionado");      } }
  • 24.
    Listeners Por exemplo,um Button, gera eventos quando é clicado, enviando notificações para o objecto do tipo OnClickListener que está registado no Button. Ver projecto android-3 Experimentem adicionar outro botão Ver projecto android-4
  • 25.
    Exemplo calculadora defracções Ver projecto FractionCalculator
  • 26.
    Exemplo SmsSender Verprojecto SMSSender
  • 27.
    Fim Cursos deVerão na Católica 2010 http://porto.ucp.pt/cvc/ Jorge C. S. Cardoso, Luís Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt http://slideshare.net/jorgecardoso (tag: cvc2010) Código fonte:  http://db.tt/AOFOfA2