Sunteți pe pagina 1din 35

UNIVERSIDADE ESTADUAL DE CAMPINAS - UNICAMP FACULDADE DE TECNOLOGIA FT CURSO DE TECNOLOGIA EM SISTEMAS DE TELECOMUNICAES TRABALHO DE GRADUAO INTERDISCIPLINAR

ESTUDO E APLICAES DO SISTEMA OPERACIONAL ANDROID

CLARISSA LUIZA JUSTINO DE LIMA

LIMEIRA NOVEMBRO/2011
1

UNIVERSIDADE ESTADUAL DE CAMPINAS - UNICAMP FACULDADE DE TECNOLOGIA FT

ESTUDO E APLICAES DO SISTEMA OPERACIONAL ANDROID

Clarissa Luiza Justino de Lima

TGI apresentado Faculdade de Tecnologia da Unicamp como requisito de concluso do Curso de Tecnologia em Sistemas de Telecomunicaes Professor Orientador: Andr Franceschi de Angelis

LIMEIRA NOVEMBRO/2011

AGRADECIMENTOS

Agradeo primeiramente a Deus e a minha famlia. Aos meus pais, Jos Francisco e Maria das Graas, pelo carinho e pela confiana que sempre depositaram em mim. Aos meus tios, Lourdes e Valmiro, por me acompanharem to de perto durante esse perodo.

Ao professor Andr, pela ateno na orientao deste trabalho, desde o primeiro contato at o trmino do mesmo.

Ao Fabio, pelo carinho e compreenso.

Agradeo especialmente aos amigos que fiz nesses quatro anos da graduao, pelo companheirismo e por tantos bons momentos ao meu lado. A presena de vocs foi fundamental para que eu continuasse e superasse as dificuldades encontradas ao longo desse curso. Agradeo as meninas da repblica; Andresa, Camila, Vanessa, Fabiana e Clcia, pelos anos de convivncia que as transformaram em minha segunda famlia. A Ivan e Giovainni, pelo alto astral e a amizade. E a Michel, William e Esdras, sobreviventes que me acompanharam at o final desse curso.

O talento educa-se na calma, o carter no tumulto da vida. Johann Goethe


4

Sumrio
RESUMO .................................................................................................................................................. 6 1. 2 INTRODUO .................................................................................................................................. 7 PLATAFORMA ANDROID.................................................................................................................. 9 2.1 2.2 2.3 2.4 3 HISTRIA ............................................................................................................... 9 VERSES ............................................................................................................. 10 ARQUITETURA ..................................................................................................... 12 ASPECTOS DE SEGURANA .............................................................................. 13

MATERIAIS E MTODOS ................................................................................................................ 16 3.1 3.2 MATERIAIS E RECURSOS .................................................................................. 16 CONFIGURAES DO AMBIENTE DE DESENVOLVIMENTO ............................ 16

PROGRAMAS DESENVOLVIDOS ..................................................................................................... 17 4.1 4.2 PROGRAMA 1- APRESENTANDO O ANDROID .................................................. 17 PROGRAMA 2- LISTA DE COMPRAS .................................................................. 21

5 6 7

RESULTADOS E DISCUSSO ........................................................................................................... 25 CONCLUSO .................................................................................................................................. 27 REFERNCIAS BIBLIOGRFICAS ..................................................................................................... 28

RESUMO

LIMA, C.L.J. Estudo e aplicaes do sistema operacional Android. Professor Orientador: Andr Franceschi de Angelis; Limeira: Unicamp, 2011, 35 fl., Trabalho de Graduao Interdisciplinar.

O Android uma plataforma desenvolvida com base no sistema operacional Linux e um de seus principais diferenciais o fato de seu cdigo ser aberto, permitindo que os desenvolvedores possam criar aplicativos de forma ilimitada. Esse trabalho teve como principal objetivo mostrar o ingresso de uma estudante de telecomunicaes no ambiente de desenvolvedores de aplicativos para o Android e as etapas do desenvolvimento desses aplicativos. Foram descritos aspectos da plataforma como forma de apresent-la antes da introduo ao ambiente de desenvolvimento.

Palavras-chave: Android, aplicativos, convergncia.

1. INTRODUO

Atualmente, o telefone celular o produto de consumo mais utilizado no mundo. Em 2010, foi alcanada a marca de 5,3 bilhes de aparelhos [1], um nmero muito significativo diante de uma populao mundial que beira os 7 bilhes de habitantes. O crescimento do consumo destes aparelhos acompanhado e impulsionado por uma srie de novas funcionalidades neles includas. As pessoas j no se contentam em somente fazer ligaes e mandar mensagens: aparelhos mais modernos possuem cmera digital, tocador de MP3, acesso Internet e formas de edio de texto. Os modelos evoluem constantemente, tornando-se mais completos a cada dia. Um fator impulsionador dessas novas funcionalidades foi a tecnologia utilizada pela terceira gerao de telefonia mvel. Essa tecnologia proporciona uma transmisso de dados mais veloz e opera dentro de um espectro de frequncia mais amplo, em relao s anteriores, podendo assim oferecer servios mais complexos e que exigem mais banda, como videoconferncia, TV e mensagens multimdia. O espectro mais amplo permite que as operadoras trabalhem com um espao maior sem sobrecarregar a rede, o que se reflete em servios mais baratos. A terceira gerao de celulares tornou-se possvel devido ao surgimento de novas tecnologias de hardware paralelamente modernizao dos sistemas operacionais e a convergncia de funes do aparelho. Criou-se ento uma tendncia mundial em integrar hardware, software, servios e meios sobre uma plataforma nica de transmisso e comunicao. Essa convergncia digital permite ao usurio acessar as informaes desejadas em qualquer meio de comunicao atravs de uma interface nica. Um dos frutos dessa convergncia o smartphone, que um telefone celular com funcionalidades avanadas e que podem ser estendidas por meio de programas executados no seu sistema operacional. Os smartphones j so 21,8% dos aparelhos celulares do mundo [2]. Entre os principais sistemas operacionais, pode-se citar o Symbian, o Blackberry OS, o
7

Windows Mobile, o iOS e o Android. Recentemente, o Android alcanou o posto de plataforma mais popular, anteriormente ocupado pelo Symbian, e j detm cerca de 48% do mercado mundial de smartphones [3]. O Android uma plataforma desenvolvida com base no sistema operacional Linux e gerenciada pelo Google1. Um de seus principais diferenciais o fato de seu cdigo ser aberto, permitindo que os desenvolvedores possam criar aplicativos de forma ilimitada. Consequentemente, isso se reflete em aplicativos inovadores e uma resposta mais rpida demanda [4]. O objetivo deste trabalho retratar o ingresso de uma estudante de telecomunicaes no ambiente de desenvolvedores de aplicativos para o Android, mostrando quais so as principais facilidades, limitaes e at que ponto possvel chegar num primeiro contato. Como resultado, sero apresentadas duas aplicaes-exemplo. As aplicaes foram desenvolvidas no eclipse com a finalidade de ilustrar o estudo da plataforma e mensurar a complexidade desde a instalao de softwares e plug-ins para configurar o ambiente at o funcionamento correto da aplicao, descrevendo esse caminho passo a passo. O trabalho est organizado em cinco captulos, que descrevem a histria do Android, verses, arquitetura, aspectos de segurana e a criao dos aplicativos desenvolvidos para a plataforma.

Google Inc., Mountain View, California, USA.


8

PLATAFORMA ANDROID

Apresentao do sistema operacional Android, dividido em subsees que descrevem sua histria, verses, arquitetura e seus aspectos de segurana.

2.1 HISTRIA

A Open HandsetAlliance (OHA) foi criada em novembro de 2007 por um grupo de 47 empresas das reas de telefonia mvel, desenvolvedores e comercializadores de software, com o apoio do Google. A OHA tem por objetivo construir em conjunto um Sistema Operacional de cdigo aberto. Essa iniciativa buscava uma resposta mais rpida em relao demanda, alm de mais liberdade para os desenvolvedores [4]. Entre seus membros encontram-se a Telefnica, a Motorola, a Dell e a Samsung.

O primeiro projeto da OHA foi o Android, visando a uma plataforma que permitisse aos desenvolvedores criarem aplicaes que possam tirar total proveito do que o celular pode oferecer. Por exemplo, usar qualquer uma das funcionalidades do ncleo do aparelho, tais como a cmera e o sistema de chamadas. O primeiro telefone comercialmente disponvel para rodar o sistema Android foi o HTC dream, lanado em outubro de 2008. O aparelho surgiu como a primeira ameaa sria ao iPhone, da Apple, que at ento liderava o mercado de smartphones nos EUA. Os maiores diferencias desse celular eram o oferecimento de uma navegao mais simplificada na Internet e a possibilidade de ter vrias aplicaes abertas em simultneo, capacidade que o iPhone no possua [5]. Paralelamente ao lanamento do HTC dream,o Google disponibilizou meios que introduzissem os desenvolvedores nessa nova plataforma, como o Software development kit (SDK) e arquivos de ajuda. O Android SDK disponibiliza ferramentas para o desenvolvimento de aplicativos na plataforma, utilizando a linguagem de programao Java. Esse ambiente inclui emulador, ferramentas para debugging de memria e anlise de desempenho.

Para ingressar no mundo Android e desenvolver aplicaes, preciso entender seu funcionamento e sua arquitetura. O restante deste captulo tem por objetivo a
9

apresentao da arquitetura e seus componentes, como camadas, ncleo e mquina virtual.

2.2 VERSES A primeira verso do Android foi a 1.5, chamada de Cupcake e lanada em 2009. A partir dela, todas as verses lanadas seguiram a ordem alfabtica e tem nomes de sobremesas; geralmente o intervalo entre os lanamentos de seis meses. So elas: Cupcake, Donut, Eclair, FroYo, Gingerbread, Honeycomb e Ice Cream Sandwich. As verses FroYo, Honeycomb e Ice Cream Sandwich merecem destaque por serem, respectivamente, a verso mais utilizada, a primeira disponvel para tablets e a primeira a rodar tanto em smartphones quanto em tablets. Entender a distribuio das verses da plataforma auxilia o desenvolvedor a focar o aplicativo em caractersticas pertencentes s verses mais utilizadas. A Figura 1 mostra a distribuio atual de dispositivos ativos Android, rodando em diferentes verses da plataforma. Cada verso possui um nvel API, que um nmero inteiro que representa a reviso API oferecida por uma verso da plataforma Android. o API que garante a compatibilidade do aplicativo com dispositivos em que pode ser instalado. Como uma API descreve o quadro mximo suportado, cada API compatvel com todos os seus anteriores. Por exemplo, um aparelho que rode a verso 2.2 (API nvel 8) suporta uma aplicao programada para a verso 2.1 (API nvel 7). Isso permitido pois uma nova API consiste em atualizaes, ento as partes mais velhas no so removidas, de modo que as aplicaes existentes ainda podem us-las. A verso FroYo 2.2 trouxe rapidez aos aplicativos e a navegao, um salto em relao s verses antecessoras que at ento nenhuma outra verso havia dado, e alcanou o posto de verso mais distribuda. Esse aumento de velocidade foi possvel porque essa verso trouxe um compilador em tempo real para a mquina virtual Davlik, que resulta em uma CPU at cinco vezes mais rpida [12]. A navegao na web tambm ficou mais rpida com um Javascript V8, at trs vezes mais rpido do que as verses anteriores. Quanto ao browser, a maior inovao foi o suporte ao Adobe Flash como um download opcional no Android Market. A verso
10

FroYo tambm implementou a possibilidade de compartilhar uma conexo 3G com outros aparelhos, por meio de Wi-Fi, possibilitando a criao de hotspots portteis

Figura 1- Distribuio das verses no perodo compreendido entre 19 de setembro e 3 de outubro de 2011. Fonte: http://developer.android.com/resources/dashboard/platformversions.html.

A Honeycomb (3.0) foi a primeira verso criada para tablets. Ela tem recursos como a possibilidade de arrastar e puxar qualquer fragmento das aplicaes e virar as pginas com muito mais realismo, como em um livro de papel. O browser lembra uma experincia em desktop, se assemelha ao google chrome. A tela melhor aproveitada e os widgets ficam mais dinmicos devido ao tamanho da tela. Anunciada em outubro de 2011 a verso 4.0, Ice Cream Sandwich, a primeira das verses adequada tanto para smartphones quanto para tablets, iniciando uma nova fase na integrao de dispositivos mveis e levando para os smartphones recursos que estavam disponveis somente para tablets, na verso Honeycomb. O reconhecimento facial uma das principais inovaes dessa verso. Por meio da cmera frontal, esse possibilita a identificao da pessoa, realizando o desbloqueio do celular sem a solicitao de uma senha. A cmera passa a ser mais sofisticada, trazendo recursos de edio de imagens, como recorte e montagem de fotos panormicas O sistema operacional melhorou o reconhecimento de voz para locuo de textos, possibilitando que o texto seja ditado ao invs de digitado. Verses anteriores j
11

contavam com reconhecimento de voz, porm para realizar funes limitadas, como busca na web. O Ice Cream Sandwich possibilita o compartilhamento de dados usando a tecnologia Near Field Communication (NFC). Essa tecnologia semelhante ao bluetooth, permite a troca de vdeos, dados e aplicativos entre telefones prximos, porm sua velocidade de transmisso mais baixa e seu consumo de energia menor [13] . Geralmente a distncia tolerada para o funcionamento do NFC de alguns centmetros. Espera-se que esse se torne um sistema muito utilizado nas compras via smartphone, pois telefones que possuem NFC podem enviar dados criptografados um leitor de cartes. Esses dados possuem informaes sobre os clientes e permitem que o telefone substitua o carto de crdito.

2.3 ARQUITETURA Sabe-se que o software em uma plataforma pode ser estruturado em camadas [5]. A organizao utilizada nos dispositivos Android dividida em quatro camadas, como mostra a Figura 2.

Figura 2: Arquitetura do Android. Fonte: http://developer.android.com/guide/basics/what-is12

android.html.

O Android um software de arquitetura em pilha, onde camadas trabalham trocando mensagens. Cada uma das camadas da pilha agrupa vrios programas que suportam funes especficas [6].

O Google utilizou a verso 2.6 do Linux para construir o kernel do Android. Ele atua como uma camada de abstrao entre o hardware e o resto da pilha de software. O kernel responsvel por gerenciar os drivers do hardware, tais como: vdeo, cmera, bluetooth, carto de memria, teclado, WiFi, USB, udio e Binder. H tambm um sistema balanceador de energia, onde um aplicativo requisita o gerenciamento de energia e o driver de energia do kernel passa a checar periodicamente todos os dispositivos que no esto sendo utilizados por aplicaes e os desliga. O Android possui a mquina virtual Dalvik, especialmente criada para ele. A Dalvik roda aplicaes, acessa recursos e trabalha com a interatividade entre Linux e biblioteca [8]. Um fator que determinou sua criao foi a busca da liberdade para evoluir com o Android sem depender da especificao JSR (Java specification requests), documentos bastante burocrticos que descrevem as especificaes e tecnologias propostas para a adio na plataforma Java. Na camada de aplicaes, a camada-topo, envia as requisies para o middleware e recebe dele o resultado de suas requisies, atuando como uma interface entre o usurio e o dispositivo. Nela esto os aplicativos fundamentais, escritos em Java. Alguns recursos no podem ser acessados diretamente pela camada de aplicao, sendo necessrio chamar um recurso de uma camada inferior.

2.4 ASPECTOS DE SEGURANA

Em agosto de 2011, as ameaas desenvolvidas para o sistema operacional Android representavam cerca de 23% do total das que so criadas para plataformas mveis [9]. Projees para 2012 apontam um enorme crescimento desse nmero, que deve saltar dos atuais 200 para 12.000. Esse nmero pode ser justificado pela crescente quantidade de usurios da plataforma, que representam possveis vtimas
13

para os criminosos. Outro fator que incentiva a ao dos criminosos que cada vez mais as pessoas utilizam seus celulares para armazenar informaes importantes. Enquanto o Linux possui nmero de UID (User Identification) para monitorar usurios e conceder eles permisses, que protegem o sistema e arquivos, no Android cada UID alocado uma aplicao. Desse modo ao invs de cada usurio possuir uma nica identificao, e todas as aplicaes utilizarem o mesmo UID, cada aplicao possui uma UID diferente [10]. Para fazer uso de recursos protegidos do dispositivo, deve-se incluir no AndroidManifest.xml uma ou mais etiquetas <uses-permission> , declarando as permisses da aplicao. Por possurem identificaes distintas, as aplicaes ficam isoladas. A plataforma permite aos desenvolvedores que solicitem os recursos necessrios para a sua aplicao, como o acesso agenda de contatos ou a cmera de vdeo. o usurio quem decide se vai conceder ou negar o pedido do um aplicativo para certas capacidades no aparelho. Quando a permisso includa no manifesto, necessrio atribuir a ela um nvel de proteo (<ProtectionLevel>). Por exemplo, uma aplicao que oferece graves riscos ao usurio classificada como perigosa. O aplicativo tambm deve ter uma etiqueta (android:label) e uma descrio (android:description). A etiqueta descreve sucintamente o que a permisso est protegendo enquanto a descrio informa os direitos concedidos pela permisso e adverte sobre os males que podem ser causados caso essa concesso de privilgios seja feita para um aplicativo malicioso [11]. Detectar agentes maliciosos uma tarefa difcil, pois os limites que determinam se um software se enquadra nessa categoria no so bem definidos. A equipe do Google definiu alguns parmetros que ajudam a encontrar um agente mal intencionado: Exibio de mensagens no-solicitadas pelo usurio, drenagem da bateria do aparelho rapidamente, ocultamento de arquivos e dificuldade de desinstalao so alguns deles. Aplicativos mal intencionados podem ser encontrados at mesmo no Android Market, a loja oficial de aplicativos para o sistema operacional. Com apenas dez linhas de cdigo malicioso em um aplicativo j possvel roubar dados de um

14

usurio.

Alguns possuem a capacidade de produzir srios danos, como gravar

conversas, identificar dados de carto de crdito e envi-los ao criminoso. Quando os aplicativos contaminados so detectados, o Google os remove da loja mas nada pode ser feito em relao aos aplicativos j baixados e instalados. Um meio de resolver esse problema seria a desativao desses aplicativos remotamente, mas a idia de ter seu sistema acessado dessa maneira no agrada os consumidores, o que faz com que essa possibilidade seja desconsiderada por enquanto. Percebe-se que o usurio o principal responsvel pela segurana do Android em se tratando de aplicativos. altamente recomendvel a instalao de um antivrus no aparelho. Alm disso cabe a ele ficar atento em relao s permisses de acesso solicitadas e conferir se h algo desnecessrio, como um jogo solicitando permisso para acessar a agenda de contatos. O prximo captulo lista os recursos utilizados neste trabalho e indica a configurao de ambiente selecionada.

15

3 MATERIAIS E MTODOS
Com base nos conceitos apresentados nos captulos anteriores, foram desenvolvidos dois programas muito simples exemplificando a teoria exposta, sem aplicao comercial e com a finalidade de ilustrar o funcionamento do Android. 3.1 MATERIAIS E RECURSOS - Computador pessoal comum com sistema operacional Microsoft Windows 7; - JDK 7- Java development kit - Software Eclipse, verso Indigo - Pacote Android SDK - Plataforma Android 2.2 - Plugin ADT para o Eclipse verso 12.0.0 3.2 CONFIGURAES DO AMBIENTE DE DESENVOLVIMENTO Primeiramente foi necessrio instalar uma mquina virtual Java no computador. Depois, foi preciso baixar o Eclipse e descompact-lo (no necessrio instalar). Aps o Eclipse, foi preciso instalar o kit de desenvolvimento do Android, o SDK e o plugin para Eclipse, disponveis no site dos desenvolvedores Android. Na instalao do SDK, foi necessrio escolher entre os pacotes disponveis qual verso da plataforma se desejava usar e baix-la. Para os aplicativos desse trabalho, foi utilizada a verso 2.2, por ser a verso mais distribuda nos aparelhos. Em seguida, foi preciso fazer uma conexo entre o Eclipse e o emulador AVD, acessando no eclipse window>Preferences e selecionando o diretrio onde foi instalado o SDK. O processo de configurao do ambiente foi simples, embora demorado.

16

4 PROGRAMAS DESENVOLVIDOS
O objetivo do primeiro programa foi criar um aplicativo que apresente o Android. O aplicativo tem trs botes: o primeiro exibe informaes sobre a plataforma quando selecionado, o segundo traz informaes sobre as verses da plataforma e o terceiro encerra o aplicativo. Tambm foram feitas alteraes no layout convencional, como centralizao e mudana no tamanho dos botes, com a finalidade de melhorar sua visualizao. O segundo programa cria uma tela semelhante ao cardpio de uma lanchonete. So exibidos os nomes e preos de quatro produtos: refrigerante, suco, salgado e lanche. O usurio deve selecionar os produtos que vai comprar e clicar em um boto chamado Preo total que exibe a soma dos valores dos produtos escolhidos. Os cdigos completo dos dois exemplos esto no Apndice A. 4.1 PROGRAMA 1- APRESENTANDO O ANDROID O primeiro passo para codificar a aplicao foi criar um novo Android Project no Eclipse. O arquivo gerado mostrado na Figura 3, OnCreate() inicia a aplicao e permite a criao de sua tela. A chamada setContentView() exibe a tela. Esse arquivo encontra-se na pasta src.

Figura 3- Cdigo gerado pela criao de um novo projeto

R.layout.main um identificador de recurso que referencia o arquivo main.xml, e fica na pasta res>layout (Figura 4). Alteraes na interface so implementadas atravs de modificaes no main.xml.
17

O LinearLayout, utilizado nessa aplicao, o layout mais comumente usado. Ele alinha todos os objetos em um nico sentido, vertical ou horizontal, de acordo com a orientao atribuda.

Figura 4- Estrutura de pastas do programa de apresentao

Foram adicionados ao main os trs botes e o ttulo do programa. Cada boto recebeu uma identificao e uma etiqueta, que informa o texto a ser apresentado em cada um. Como o texto fica guardado nas strings (res>values>strings.xml), cada boto adicionado no layout deve ter seus textos adicionados nas strings. Na figura 5 mostrado o aplicativo aps esses processos. Os trs botes foram criados, porm o design do aplicativo poderia ainda ser melhorado j que os botes eram grandes demais e se concentravam somente na parte superior da tela, deixando um espao que poderia ser aproveitado.

18

Figura 5- Fase inicial do programa 1

Foi adicionado um novo LayerLayout e, dentro dele, os botes so centralizados (android:layout_gravity="center"), (android:text_size=22.5sp) e o ttulo os do programa botes aumentado diminudos

(android:layout_marginBottom="25dip"). Para deixar o aplicativo mais apresentvel, a tela preta foi substituda por uma colorida. Essa modificao aconteceu com a insero do recurso colors.xml dentro de res>values. Para implementar funcionalidades nos botes, foi necessrio criar dois arquivos de layout, o informaes.xml e o verses.xml. O texto exibido ao se acionar um boto inserido em strings.xml. A criao de uma nova activity sempre requer a criao de uma nova classe. No caso foram criadas duas classes: Informacoes.java e Versoes.java. As duas

adicionadas ao AndroidManifest.xml, pois todas as atividades precisam estar declaradas nele. Essas classes sobrescrevem o mtodo onCreate() e chamam o mtodo setContentView(). Abrir uma nova janela quando um boto clicado exige a alterao do o onCreate(), localizado no PrimeiroAndroidActivity.java (Figura 6). Aps o

setContentView(), chamado o findViewById(), que busca um recurso pela ID e


19

ento determina qual recurso deve ser manipulado, atravs do mtodo setOnClickListener. O componente.
.

OnClickListener serve para ligar um evento de Click a um

Figura 6- Trecho do cdigo de PrimeiroAndroidActivity.java

Foi preciso sobrescrever o mtodo onClick(), que ativado toda vez que o boto clicado. Para isso, foi utilizado um comando switch, que compara o ID obtido com o onClick() com a identificao dos botes declarados no main.xml. A verso final do programa exibida na Figura 7.

Figura 7- Tela final do Programa 1

20

Caso seja acionado o boto verses ou o informaes, chamada a classe que corresponde a cada um deles (Versoes.classe Informacoes.class, respectivamente) e a atividade iniciada. Se o boto sair for acionado, nenhuma classe chamada, executa-se o comando finish() e a aplicao encerrada. 4.2 PROGRAMA 2- LISTA DE COMPRAS O segundo programa recebeu o nome de Lista compras e foi feito para rodar em API nvel 8. Primeiramente, foi acessado o Graphical Layout no main.xml e ento foram arrastados quatro Check Boxes e um button, disponveis na pasta FormWidgets, conforme visto na Figura 8.

Figura 8- Graphical layout inicial da aplicao

Para alterar a mensagem exibida no incio da aplicao, foi alterado o campo Text da TextView no main.xml e inserida a frase Escolha os produtos. Foi adicionada uma identificao (android:id) e um texto (android:text) com o nome do produto e o preo exibido em cada uma das CheckBox, como indicado na Figura 9.
21

<TextViewandroid:layout_height="wrap_content"android:id="@+id/textView1"android:te xtAppearance="?android:attr/textAppearanceLarge"android:text="Escolhaosprodutos:"a ndroid:layout_width="match_parent"android:layout_weight="0.05"></TextView> <CheckBoxandroid:layout_height="wrap_content"android:id="@+id/chkrefri"android:lay out_width="wrap_content"android:text="Refrigerante (R$2,00)"android:layout_weight="0.05"></CheckBox> <CheckBoxandroid:layout_height="wrap_content"android:id="@+id/chksuco"android:layo ut_width="wrap_content"android:text="Suco (R$2,60)"android:layout_weight="0.05"></CheckBox> <CheckBoxandroid:layout_height="wrap_content"android:id="@+id/chksalgado"android:l ayout_width="wrap_content"android:text="Caf (R$2,40)"android:layout_weight="0.05"></CheckBox> <CheckBoxandroid:layout_height="wrap_content"android:id="@+id/chklanche"android:la yout_width="wrap_content"android:text="Lanche (R$5,80)"android:layout_weight="0.05"></CheckBox> <Buttonandroid:id="@+id/bttotal"android:layout_height="wrap_content"android:text=" Preo total"android:layout_width="fill_parent"android:layout_weight="0.05"></Button>

Figura 9- Trecho do main.xml do Segundo programa

Por ltimo, foi necessrio alterar o ListaComprasActivity.java. Foi chamado o mtodo findViewById() para cada uma das Checkbox e para o boto do preo total. Em seguida, foram criadas quatro estruturas de if. Cada uma delas verifica se um item foi selecionado. Se o item foi marcado, a varivel total incrementada com o valor do item.O total exibido ao se clicar no boto preo total, conforme o cdigo da Figura 10.
void onClick(View arg0) { double total =0; if (chkrefri.isChecked())total += 2.00; if (chksuco.isChecked())total += 2.60; if (chksalgado.isChecked())total += 2.40; if (chklanche.isChecked())total += 5.80; AlertDialog.Builder dialogo = new AlertDialog.Builder(ListaComprasActivity.this); dialogo.setTitle("Aviso"); dialogo.setMessage("Valor total da compra :"+ String.valueOf (total)); dialogo.setNeutralButton("OK",null);

22

dialogo.show(); }

Figura 10- Trecho do cdigo de ListaComprasActivity.java.

Figura 11- Tela final da aplicao Lista de Compras

Figura 12- Seleo de produtos 23

Figura 13- Preo final

A Figura 11 mostra a tela final do aplicativo, e as Figuras 12 e 13 o mostram em funcionamento: So selecionados dois produtos, cuja soma de valores de R$7,80, e aps o clique no boto preo total o programa calcula esse valor e ele exibido na tela sob a forma de aviso.

24

5 RESULTADOS E DISCUSSO
No primeiro programa as dificuldades encontradas foram relacionadas aos componentes do diretrio e sua interdependncia. A descoberta de que para cada activity deveria ser criado um novo layout ocorreu tardiamente. Na activity, deve constar o nome do layout que ser usado. Por exemplo, em informaes o setContentView(R.layout.informacoes) est dizendo que o informaes.xml ser usado como layout, portanto necessrio que seja criado um arquivo .xml com este nome. Inicialmente ocorreu a tentativa de acessar informacoes.xml sem que esse layout houvesse sido criado, o que causou um erro. Outra dificuldade foi encontrada na criao das classes informaes e verses. Com a informao de que para criar uma classe era preciso estender Activity do pacote android.app e sobrescrever o mtodo onCreate(), a dvida era saber como ler o clique dos botes do aplicativos. Posteriormente foi verificado que para adicionar funcionalidades nos botes necessrio chamar o mtodo setOnClickListener, correspondendo implementao do padro Observer de programao. Tambm havia um erro, "can not be resolved or is not a field", nos botes, que foi resolvido quando os botes, anteriormente identificados apenas como Button, passaram a ser identificados como Button1, Button2 e Button3. Aps essa mudana, os botes tambm precisaram ser renomeados no main.xml, e s assim o problema foi resolvido. O segundo programa inicialmente no rodou. Apesar de no apresentar erro ao ser compilado, inmeros erros eram apontados no LogCat. A primeira tentativa de solucionar o problema foi mudar o nvel API na hora de rodar o programa, a segunda foi dar um clean no projeto. Visto que nenhuma delas funcionou, foi feita uma cpia idntica e renomeada do programa, e assim ele funcionou. No foram determinadas as causas exatas do problema. Apesar do segundo programa representar uma aplicao mais prtica e comercial que o primeiro, ele foi o mais simples dos dois, visto que foi feito praticamente atravs de incluses e alteraes no Graphical Layout, arrastando botes e posteriormente os declarando e chamando mtodos que permitissem seu funcionamento.
25

Por

ser

um

sistema

operacional

recente,

bibliografia

voltada

para

desenvolvedores no extensa, o que gera certa dificuldade na hora de programar e entender os erros gerados na compilao. Porm, j existem inmeros fruns de desenvolvedores Android e eles se mostraram uma ferramenta bastante til na hora de sanar dvidas. Entender a arquitetura do Android e os componentes do diretrio de um programa se mostrou algo fundamental. Conhecer a funo do manifesto, layout e das classes algo de imensa importncia para a preveno de erros. Tambm necessrio entender como elas se relacionam. Por exemplo, para uma nova activity deve-se criar uma nova classe, e elas devem ser adicionadas ao Android.xml. Essas informaes devem ser adquiridas antes de se comear a programar, o que exige certo esforo, mas evita o surgimento de inmeros erros na compilao, poupando muito tempo ao longo do processo.

26

6 CONCLUSO
Desenvolver aplicativos para Android uma tarefa possvel mesmo para quem nunca utilizou a linguagem Java. Visto que as disciplinas lecionadas no curso de sistemas de telecomunicaes no abordam a linguagem Java, apenas a linguagem C, elas no contriburam diretamente para esse trabalho, mas proporcionaram a familiarizao com uma linguagem de programao. Essa familiaridade com alguma linguagem importante porque proporciona um entendimento do funcionamento do programa. Uma disciplina voltada para a lgica facilitaria muito, pois como boa parte do cdigo dos aplicativos gerado automaticamente, o fundamental entender a lgica da programao e estudar que mtodos devem ser implementados para adicionar ao programa as funcionalidades desejadas. Os aplicativos propostos foram desenvolvidos com xito. Foram programas simples devido s limitaes impostas pela falta de entendimento prvio do Android e da linguagem Java. Acredito que, com a base adquirida nesse trabalho, se a pesquisa em relao ao Android e seus mtodos forem continuados, o desenvolvimento ser um processo evolutivo que propiciar a criao de aplicativos cada vez mais complexos. Esse trabalho me proporcionou um contato mais profundo com informtica, rea cada vez mais relacionada e complementar s telecomunicaes. Apesar das disciplinas de informtica tangenciarem sistemas de telecomunicaes no decorrer do curso, foi esse trabalho que me permitiu um domnio mais amplo de um contedo desse curso e sua aplicao prtica. Esse mergulho num campo no to familiar foi uma experincia muito interessante para mim, e acredito que tambm pode servir como um diferencial profissional. O processo de pesquisar um assunto novo e a busca de habilidades que me permitissem criar aplicativos para ele foi enriquecedor, e esse estudo foi estimulante, visto que dele dependia o sucesso dos aplicativos propostos.

27

7 REFERNCIAS BIBLIOGRFICAS
[1] Mobile subscriptions reach an estimated 5.3 bilion and Internet users surpass 2 billion <http://www.itu.int/net/itunews/issues/2010/10/index.aspx> Acessado em novembro de 2011. [2] Redes sociais vs. 5,3 bilhes de pessoas <http://www.brainstorm9.com.br/23198/mobile/redes-sociais-vs-53-bilhoes-depessoas> Acessado em novembro de 2011. [3] Android conquers almost 50 percent of smartphone market <http://www.reuters.com/article/2011/08/01/us-smartphones-researchidUSTRE7704MS20110801> Acessado em novembro de 2011 [4] Android Overview <http://www.openhandsetalliance.com/android_overview.html> Acessado em novembro de 2011 [5] HTC Dream o novo competidor do iPhone <http://www.jn.pt/PaginaInicial/Tecnologia/Interior.aspx?content_id=1016825> Acessado em novembro de 2011. [6] Piantino, A.P.L.,Anlise do suporte automao de testes na plataforma aberta Android, UFSC, 2008. [7] Como funciona o Android (Google Phone) <http://informatica.hsw.uol.com.br/google-phone2.htm> Acessado em novembro de 2011 [8] Mquina virtual Dalvik<http://www.euandroid.com.br/inicianteandroid/2011/05/maquina-virtual-dalvik> Acessado em novembro de 2011 [9] Ameaas ao Android so 23% das feitas para plataformas mveis <http://g1.globo.com/tecnologia/noticia/2011/09/ameacas-ao-android-sao-23-dasfeitas-para-plataformas-moveis.html> Acessado em novembro de 2011 [10] Burns, J., Developing secure mobile applications for android <http://www.isecpartners.com/files/iSEC_Securing_Android_Apps.pdf> Isec partners, 2008.

28

[11] Security andpermissions<http://developer.android.com/guide/topics/security/security.html> Acessado em novembro de 2011 [12] Review: Android 2.2 <http://www.gizmodo.com.br/conteudo/review-android-22um-doce/> Acessado em novembro de 2011 [13] About NFC <http://www.nfc-forum.org/aboutnfc/> Acessado em novembro de 2011

29

8 APNDICE A
Programa 1 SegundoAndroidActivity.java
package clarissa.exemplos;

import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class SegundoAndroidActivity extends Activity /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button versoesButton = (Button) findViewById(R.id.versoes_button1); versoesButton.setOnClickListener(this); Button informacoesButton = (Button) findViewById(R.id.informacoes_button2); informacoesButton.setOnClickListener(this); Button sairButton = (Button) findViewById(R.id.sair_button3); sairButton.setOnClickListener(this); } public void onClick(View v) { Intent i; switch (v.getId()) { case R.id.informacoes_button2: i = new Intent(this, Informacoes.class); startActivity(i); break; case R.id.versoes_button1: i = new Intent(this, Versoes.class); startActivity(i); break; case R.id.sair_button3: finish(); break; } } } implements OnClickListener {

30

Informacoes.java
package clarissa.exemplos; import android.app.Activity; import android.os.Bundle; public class Informacoes extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.informacoes); // TODO Auto-generated method stub } }

informacoes.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:background="@color/background" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="30dip" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="10dip"> <TextView android:id="@+id/informacoes_conteudo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/informacoes_texto" /> </ScrollView> </LinearLayout> >

strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, SegundoAndroidActivity!</string> <string name="app_name">PrimeiroAndroid</string>

31

<string name="titulo">Apresentando o Android</string> <string name="versoes_label">Verses</string> <string name="informacoes_label">Informaes</string> <string name="sair_label">Sair</string> <string name="versoes_title">Verses</string> <string name="versoes_texto"> As verses do android recebemnomes de sobremesas e seguemumalgicaalfabtica. Atualmente existem 7 verses, sendo a mais antiga delas a cupcake(android 1.5) e a ice cream sandwich a mais atual.</string> <stringname="informacoes_title"> Informaes </string> <stringname="informacoes_texto"> O android uma plataforma de cdigo aberto que roda sobre o ncleo Linux. Foi criado pela OHA com o apoio do Google. O primeiro celular a rodar esse SO foi lanado em outubro de 2008.</string> <color name="background">#5500ccff</color> </resources>

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="clarissa.exemplos" android:versionCode="1" android:versionName="1.0"> <uses-sdkandroid:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".SegundoAndroidActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Informacoes"></activity> <activity android:name=".Versoes"></activity> </application> </manifest>

main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:background="@color/background" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:padding="30dip" >

32

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/titulo" android:layout_gravity="center" android:layout_marginBottom="25dip" android:textSize="22.5sp" /> <Button android:id="@+id/versoes_button1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/versoes_label" /> <Button android:id="@+id/informacoes_button2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/informacoes_label" /> <Button android:id="@+id/sair_button3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/sair_label" /> </LinearLayout>

Programa 2
package clarissa.exemplos; import android.app.AlertDialog; import android.os.Bundle; import android.widget.*; import android.view.*; import android.app.*;

public class ListaComprasActivity extends Activity { CheckBoxchkrefri,chksuco,chksalgado,chklanche; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); chkrefri= (CheckBox) findViewById(R.id.chkrefri);

33

chksuco= (CheckBox) findViewById(R.id.chksuco); chksalgado= (CheckBox) findViewById(R.id.chksalgado); chklanche= (CheckBox) findViewById(R.id.chklanche); Button bttotal = (Button) findViewById(R.id.bttotal); bttotal.setOnClickListener(new View.OnClickListener(){ public void onClick(View arg0) { double total =0; if (chkrefri.isChecked())total += 2.00; if (chksuco.isChecked())total += 2.60; if (chksalgado.isChecked())total += 2.40; if (chklanche.isChecked())total += 5.80; AlertDialog.Builder dialogo = new AlertDialog.Builder(ListaComprasActivity.this); dialogo.setTitle("Aviso"); dialogo.setMessage("Valor total da compra :"+ String.valueOf (total)); dialogo.setNeutralButton("OK",null); dialogo.show(); } }); } }

main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:weightSum="1"> <TextView android:layout_height="wrap_content" android:id="@+id/textView1" android:textAppearance= "?android:attr/textAppearanceLarge" android:text="Escolha os produtos:"android:layout_width="match_parent" android:layout_weight="0.05"></TextView> <CheckBox android:layout_height="wrap_content" android:id="@+id/chkrefri" android:layout_width="wr ap_content" android:text="Refrigerante

34

(R$2,00)" android:layout_weight="0.05"></CheckBox> <CheckBox android:layout_height="wrap_content" android:id="@+id/chksuco" android:layout_width="wra p_content" android:text="Suco (R$2,60)" android:layout_weight="0.05"></CheckBox> <CheckBox android:layout_height="wrap_content" android:id="@+id/chksalgado" android:layout_width=" wrap_content" android:text="Caf (R$2,40)" android:layout_weight="0.05"></CheckBox> <CheckBox android:layout_height="wrap_content" android:id="@+id/chklanche" android:layout_width="w rap_content" android:text="Lanche (R$5,80)" android:layout_weight="0.05"></CheckBox> <Button android:id="@+id/bttotal" android:layout_height="wrap_content" android:text="Preo total" android:layout_width="fill_parent" android:layout_weight="0.05"></Button> </LinearLayout>

35

S-ar putea să vă placă și