Introdução à programação para Android

  • Published on
    19-Jan-2015

  • View
    46.258

  • Download
    4

Embed Size (px)

DESCRIPTION

 

Transcript

<ul><li> 1. Introduo programao para a plataforma Android Cursos de Vero na Catlica 2010 Jorge C. S. Cardoso, Lus Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt</li></ul> <p> 2. Contedo </p> <ul><li><ul><li>Mais alguns conceitos Java </li></ul></li></ul> <ul><li><ul><li>O que o Android </li></ul></li></ul> <ul><li><ul><li>Guia desenvolvimento, APIs </li></ul></li></ul> <ul><li><ul><li>Instalao SDK e Plugin Eclipse </li></ul></li></ul> <ul><li><ul><li>Estrutura de um projecto Android no Eclipse </li></ul></li></ul> <ul><li><ul><li>Ciclo de vida de uma aplicao </li></ul></li></ul> <ul><li><ul><li>Alguns controlos (caixa de texto, boto, checkbox, slider) </li></ul></li></ul> <ul><li><ul><li>Aplicao exemplo: Enviar um SMS </li></ul></li></ul> <ul><li><ul><li>Aplicao exemplo: Calculadora de fraces </li></ul></li></ul> <p> 3. Mais alguns conceitos Java: Packages </p> <ul><li><ul><li>Packages </li></ul></li></ul> <ul><li><ul><li><ul><li>Os packages so uma organizao hierrquica de classes em Java </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>Um package agrupa classes relacionadas </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>http://download-llnw.oracle.com/javase/1.4.2/docs/api/ </li></ul></li></ul></li></ul> <ul><li><ul><li>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. </li></ul></li></ul> <ul><li>import java.math.*; </li></ul> <ul><li><ul><li>Todos os ficheiros importam automaticamente o package java.lang.*; </li></ul></li></ul> <p> 4. Mais alguns conceitos Java: Packages </p> <ul><li><ul><li>As nossas classes tambm tm de ficar associadas a uma package </li></ul></li></ul> <ul><li><ul><li>(Se no o fizermos explicitamente, ficam associadas a uma package default vazia) </li></ul></li></ul> <ul><li><ul><li>Normalmente, usa-se uma estrutura tipo nomes de domnio da internet, invertida: </li></ul></li></ul> <ul><li><ul><li><ul><li>eu.jorgecardoso.cvc2010.Veiculo </li></ul></li></ul></li></ul> <ul><li><ul><li>(No nosso computador, cada uma das palavras mapeada no nome de uma pasta </li></ul></li></ul> <ul><li><ul><li><ul><li>eu/jorgecardoso/cvc2010/Veiculo.java ) </li></ul></li></ul></li></ul> <ul><li>APIs /Documentao </li></ul> <p> 5. O que o Android </p> <ul><li>"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 </li></ul> <ul><li>- Sistema operativo com kernel Linux </li></ul> <ul><li>- Framework aplicacional baseado em Java </li></ul> <ul><li>- Mquina virtual Dalvik (optimizada para dispositivos mveis) </li></ul> <p> 6. Bye, bye, Apple :) http://www.bbc.co.uk/news/technology-10839034 7. Guia de desenvolvimento, APIs </p> <ul><li>http://developer.android.com/guide/index.html </li></ul> <ul><li>http://developer.android.com/reference/packages.html </li></ul> <p> 8. Desenvolver aplicaes Android em Eclipse </p> <ul><li><ul><li>Eclipse: </li></ul></li></ul> <ul><li><ul><li><ul><li>http://www.eclipse.org/ </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li> um ambiente integrado de desenvolvimento (IDE); editor, compilador, debugger, referncia, etc </li></ul></li></ul></li></ul> <ul><li><ul><li>Android SDK: </li></ul></li></ul> <ul><li><ul><li><ul><li>http://developer.android.com/sdk/index.html </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>Bibliotecas, ferramentas e emulador Android </li></ul></li></ul></li></ul> <ul><li><ul><li>Plugin Android para Eclipse: </li></ul></li></ul> <ul><li><ul><li><ul><li>http://developer.android.com/sdk/eclipse-adt.html </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>Acesso s bibliotecas, ferramentas e emulador a partir do Eclipse </li></ul></li></ul></li></ul> <p> 9. Instalao SDK e Plugin </p> <ul><li><ul><li>SDK </li></ul></li></ul> <ul><li><ul><li><ul><li>Descarregar (link no slide anterior) </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>Descompactar e copiar para qualquer stio no disco. </li></ul></li></ul></li></ul> <ul><li><ul><li>Plugin </li></ul></li></ul> <ul><li><ul><li><ul><li>No eclipse ir a Help -&gt; Install new software </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>Adicionar o site https://dl-ssl.google.com/android/eclipse/ </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li> Marcar "Developer tools" e instalar </li></ul></li></ul></li></ul> <ul><li><ul><li>Depois de instalado o plugin </li></ul></li></ul> <ul><li><ul><li><ul><li>Ir a Window -&gt; Android SDK and AVD Manager -&gt;Available packages </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li><ul><li>Marcar e instalar </li></ul></li></ul></li></ul></li></ul> <p> 10. Criao emulador </p> <ul><li><ul><li>Window -&gt; Android SDK and AVD Manager -&gt; Virtual Devices </li></ul></li></ul> <ul><li><ul><li><ul><li>New </li></ul></li></ul></li></ul> <ul><li><ul><li>Seleccionar o dispositivo </li></ul></li></ul> <ul><li><ul><li><ul><li>Start </li></ul></li></ul></li></ul> <p> 11. Criar um projecto Android </p> <ul><li>File -&gt; New -&gt; Project : </li></ul> <ul><li>Android -&gt; Project </li></ul> <ul><li>Escolher um "Build Target" </li></ul> <ul><li>Definir : </li></ul> <ul><li><ul><li>"Application name" (qualquer coisa), </li></ul></li></ul> <ul><li><ul><li>"Package name" (do gnero com.jorge.android), </li></ul></li></ul> <ul><li><ul><li>"Create Activity" (.NomeDaClasse) e </li></ul></li></ul> <ul><li><ul><li>"Min SDK Version" ( um valor inteiro da coluna API no Build Target) </li></ul></li></ul> <p> 12. Estrutura de um projecto Android no Eclipse </p> <ul><li><ul><li>assets </li></ul></li></ul> <ul><li><ul><li><ul><li>Ficheiros externos que a nossa aplicao usa </li></ul></li></ul></li></ul> <ul><li><ul><li>bin </li></ul></li></ul> <ul><li><ul><li><ul><li>O projecto compilado </li></ul></li></ul></li></ul> <ul><li><ul><li>gen.com.jorge R.java </li></ul></li></ul> <ul><li><ul><li><ul><li> gerado automaticamente e contm identificadores de recursos </li></ul></li></ul></li></ul> <ul><li><ul><li>res </li></ul></li></ul> <ul><li><ul><li><ul><li>Recursos (imagens, texto e layout) </li></ul></li></ul></li></ul> <ul><li><ul><li>src </li></ul></li></ul> <ul><li><ul><li><ul><li>O nosso cdigo fonte. </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li> criado um esqueleto automaticamente </li></ul></li></ul></li></ul> <ul><li><ul><li>AndroidManifest.xml </li></ul></li></ul> <ul><li><ul><li><ul><li>Definies da aplicao </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>No vamos mexer </li></ul></li></ul></li></ul> <p> 13. Ciclo de vida de uma aplicao Android </p> <ul><li><ul><li>Um bocado mais complexa do que o ciclo de vida de uma aplicao desktop... </li></ul></li></ul> <p>http://developer.android.com/guide/topics/fundamentals.html#actlife 14. Activity </p> <ul><li><ul><li>A classe Activity a classe que implementa o ciclo de vida descrito e serve de base a uma aplicao. </li></ul></li></ul> <ul><li><ul><li>Todas as aplicaes so subclasses de Activity </li></ul></li></ul> <ul><li><ul><li><ul><li>Fazem override dos mtodos relativos ao ciclo de vida (que interessarem aplicao) </li></ul></li></ul></li></ul> <ul><li><ul><li>Definida no package </li></ul></li></ul> <ul><li><ul><li><ul><li>android.app </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li><ul><li>http://developer.android.com/reference/android/app/Activity.html </li></ul></li></ul></li></ul></li></ul> <p> 15. Ciclo de vida de uma aplicao Android </p> <ul><li><ul><li>Ver projecto "android-1" </li></ul></li></ul> <ul><li><ul><li>Abrir a consola </li></ul></li></ul> <ul><li><ul><li><ul><li> Window -&gt; Show view -&gt; Other : Android -&gt; Logcat </li></ul></li></ul></li></ul> <p> 16. Correr a aplicao no emulador </p> <ul><li><ul><li>(Se o emulador no estiver a correr) </li></ul></li></ul> <ul><li><ul><li><ul><li> Window -&gt; Android SDK and AVD Manager -&gt; Virtual Devices:Seleccionar o dispositivo :Start </li></ul></li></ul></li></ul> <ul><li><ul><li>Run </li></ul></li></ul> <p> 17. Alguns controlos </p> <ul><li><ul><li>A classe base para os componentes grficos num ecr a classe View </li></ul></li></ul> <ul><li><ul><li>Todos os controlos so subclasses de View: </li></ul></li></ul> <ul><li><ul><li><ul><li>Botes </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>Caixas de texto (label e editvel) </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>Scroll </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>Checkbox </li></ul></li></ul></li></ul> <ul><li><ul><li> Um ecr de uma aplicao tem, tipicamente, vrios componentes, e.g., uma caixa de texto, um boto, uma checkbox, etc. </li></ul></li></ul> <ul><li><ul><li>Para criarmos esta estrutura temos de organizar oscomponenteshierarquicamente </li></ul></li></ul> <ul><li><ul><li><ul><li>Temos de usar componentes que podem conter eles prprios vrios componentes: ViewGroup </li></ul></li></ul></li></ul> <p> 18. ViewGroups </p> <ul><li><ul><li>UmViewGroup um painel ao qual podemos adicionar outras Views (ou outros ViewGroup) </li></ul></li></ul> <ul><li><ul><li><ul><li>A classe ViewGroup ela prpria subclasse de View </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li>Mas no tem representao visual, apenas serve para organizar os componentes l dentro </li></ul></li></ul></li></ul> <ul><li><ul><li>Existem diferentes ViewGroup que organizam os componentes de forma diferente </li></ul></li></ul> <p> 19. ViewGroups </p> <ul><li><ul><li>A janela da aplicao apenas tem associada uma nica View </li></ul></li></ul> <ul><li><ul><li><ul><li>Normalmente associamos uma ViewGroup (subclasse de View) para podermos associar ViewGroup todos os outros controlos </li></ul></li></ul></li></ul> <p> 20. Alguns controlos </p> <ul><li><ul><li>A maior parte dos controlos grficos esto no package </li></ul></li></ul> <ul><li><ul><li><ul><li>android.widget </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li><ul><li>http://developer.android.com/reference/android/widget/package-summary.html </li></ul></li></ul></li></ul></li></ul> <ul><li><ul><li>As classes View e ViewGroup esto em </li></ul></li></ul> <ul><li><ul><li><ul><li> android.view </li></ul></li></ul></li></ul> <ul><li><ul><li><ul><li><ul><li>http://developer.android.com/reference/android/view/package-summary.html </li></ul></li></ul></li></ul></li></ul> <p> 21. Alguns controlos </p> <ul><li><ul><li>Todos os controlos tm um construtor que necessita de um Context </li></ul></li></ul> <ul><li><ul><li><ul><li>Este parmetro a nossa Activity (subclasse indirecta de Context) </li></ul></li></ul></li></ul> <ul><li><ul><li>Ver projecto "android-2" </li></ul></li></ul> <p> 22. Eventos de input </p> <ul><li><ul><li>Para detectarmos eventos relacionados com os controlos (eventos gerados por input do utilizador) temos de associar ao controlo um objecto que escuta as notificaes dos eventos em que estamos interessados. </li></ul></li></ul> <ul><li><ul><li>Cada controlo pode definir eventos diferentes e, por isso, classes diferentes que escutam esses eventos. </li></ul></li></ul> <p> 23. Eventos de input </p> <ul><li>public class Controlos extends Activity implements OnClickListener { </li></ul> <ul><li> Button btn; </li></ul> <ul><li> public void onCreate(Bundle savedInstanceState) { </li></ul> <ul><li> super.onCreate(savedInstanceState); </li></ul> <ul><li> // Um boto com o texto 'ol' </li></ul> <ul><li> btn = new Button(this); </li></ul> <ul><li> btn.setText("Ol"); </li></ul> <ul><li> // vamos escutar clicks no boto </li></ul> <ul><li> btn.setOnClickListener(this); </li></ul> <ul><li> setContentView(btn); </li></ul> <ul><li> } </li></ul> <ul><li> // A interface OnClickListener define apenas este mtodo que temos de implementar </li></ul> <ul><li> @Override </li></ul> <ul><li> public void onClick(View view) { </li></ul> <ul><li> Log.i("Controlos", "Boto pressionado"); </li></ul> <ul><li> } </li></ul> <ul><li>} </li></ul> <p> 24. Listeners </p> <ul><li><ul><li>Por exemplo, um Button, gera eventos quando clicado, enviando notificaes para o objecto do tipo OnClickListener que est registado no Button. </li></ul></li></ul> <ul><li><ul><li>Ver projecto android-3 </li></ul></li></ul> <ul><li><ul><li><ul><li>Experimentem adicionar outro boto </li></ul></li></ul></li></ul> <ul><li><ul><li>Ver projecto android-4 </li></ul></li></ul> <p> 25. Exemplo calculadora de fraces </p> <ul><li>Ver projecto FractionCalculator </li></ul> <p> 26. Exemplo SmsSender </p> <ul><li>Ver projecto SMSSender </li></ul> <p> 27. Fim </p> <ul><li>Cursos de Vero na Catlica 2010 </li></ul> <ul><li>http://porto.ucp.pt/cvc/ </li></ul> <p>Jorge C. S. Cardoso, Lus Gustavo Martins jorgecardoso@ieee.org, lmartins@porto.ucp.pt http://slideshare.net/jorgecardoso (tag: cvc2010) Cdigo fonte: http://db.tt/AOFOfA2 </p>