De que se trata o artigo

Este artigo ensina conceitos básicos da arquitetura Android, assim como a configurar o ambiente para compilar projetos para esta plataforma. Também aborda o funcionamento da ponte entre o Pascal e as APIs Java do Android e como utilizar estas APIs para criar controles visuais.

Para que serve

O Android é um dos líderes do mercado de Smartphones, rodando em telefones, tablets e netbooks com hardware poderoso e preço acessível. Saber como desenvolver aplicativos para esta nova plataforma é muito útil tanto para criar novos produtos, como para portar projetos existentes.

Em que situação o tema é útil

Muitos programadores e empresas envolvidos com a tecnologia Delphi possuem um grande repositório de bibliotecas, funções e código-fonte em geral escrito em Pascal. As técnicas aqui apresentadas permitem que este código bem testado seja reutilizado ao criar novos projetos Android ou então portar projetos para esta plataforma, reutilizando o conhecimento prévio de programação Pascal e evitando gastos desnecessários reescrevendo código.

Programação Android

Aplicativos Pascal nativos podem rodar em smartphones e tablets Android, desde que sejam encapsulados em um pacote APK. Este pacote deve conter o executável Pascal e também um aplicativo Java que irá intermediar a comunicação entre o programa e as APIs do Android. Para compilar o programa é necessário instalar um cross-compilador Free Pascal, criar uma estrutura de arquivos comum a projetos Android e utilizar o utilitário “ant” para compilar o projeto. Este artigo aborda esses passos, apresentando ainda um exemplo simples.

Desde que sua primeira versão foi lançada em outubro de 2008, o sistema operacional Android ganhou uma popularidade enorme e capturou uma grande fatia do mercado de smartphones e tablets. Ele oferece uma interface de usuário focada no uso do touchscreen superior àquela oferecida por sistemas operacionais mais antigos, como o PalmOS ou o SymbianOS, e comparável à interface oferecida pelo iPhone, mas com a grande vantagem de que tudo relacionado a ele pode ser encontrado por preços mais em conta. Por exemplo, é possível comprar um smartphone HTC Wildfire com touchscreen, GPS, câmera com 5 megapixels, 528 MHz, 512 MB ROM e 384 MB RAM por cerca de 800 reais, enquanto que o iPhone novo custa em torno de 2500 reais. Similarmente é necessário pagar para a Apple 100 dólares por ano para poder participar na App Store do iPhone, enquanto que o Google cobra uma taxa única de 25 dólares para desenvolvedores poderem participar do Android Market.

E agora, a questão mais importante: Ótimo, é possível comprar hardware poderoso e barato que roda o novo sistema operacional Android, mas como é possível escrever programas para ele em Pascal? Seja para portar aplicativos existentes ou para escrever novos, programadores Pascal estão sempre interessados em poder utilizar sua linguagem favorita em novas plataformas. Ao estudar as possibilidades de desenvolvimento no Android, é possível que haja certo desânimo no começo, pois a plataforma é bastante caótica, com incompatibilidade entre diferentes fabricantes e versões do Android OS, além de ser focada em Java e de modo geral pouco amigável para aplicativos nativos. Por outro lado, o Google tem lentamente dado passos na direção correta e o Android 2.3 ofereceu interfaces nativas para som e outras APIs importantes. As APIs para escrever interfaces de usuário, porém, ainda estão disponíveis apenas em Java. Apesar disso, é possível superar estas dificuldades com um pouco de criatividade. Este artigo apresenta uma solução para escrever programas para o Android 100% em Pascal. Uma parte em Java ainda é necessária, mas um programa Java genérico que responde aos comandos do programa Pascal pode ser copiado sem mudanças, exceto por mudar o nome do arquivo e da classe.

A arquitetura Android

Antes de iniciar, uma introdução ao funcionamento interno do Android é muito útil para desenvolvedores sem experiência na plataforma. No fundo, o Android é simplesmente Linux. Mas o lado Linux do Android está muito mais fundo do que normalmente se espera de derivados deste sistema e diversos aspectos chave do Linux não estão presentes no sistema do Google. Para começar, usuários não podem executar programas nativos. Aplicativos somente podem ser executados por usuários comuns via ícones na área de trabalho e estes ícones executam apenas aplicativos Java instalados através do sistema de pacotes APK. Por dentro o formato APK é um arquivo comprimido zip com um formato especial, mais especificamente uma modificação do formato jar utilizado por programas Java. Este formato não permite a execução de scripts ou código durante a instalação. Ao invés disso, ela apenas instala um aplicativo Java e outros arquivos de recursos necessários para ele. Cada arquivo APK contém ainda um arquivo manifest, que descreve quais permissões de segurança o programa requer, por exemplo, acessar dados no sdcard do usuário.

Um dos principais pontos onde o Android é diferente do Linux é o ciclo de vida do aplicativo. No Android os aplicativos são iniciados via ícones na área de trabalho e depois continuam rodando mesmo que o usuário tenha mudado para outro programa. Normalmente não há um botão para fechar os programas, então ao clicar no botão “home”, geralmente simbolizado por uma casinha, o programa continuará rodando no fundo. Quando já não houver mais espaço na memória RAM, o Android irá escolher algum dos aplicativos rodando no fundo para ser fechado. O espaço total de memória para programas é realmente a memória RAM, pois não é utilizado swap, conhecido como memória virtual no Windows. Este sistema visa tornar o sistema rápido para o usuário, apesar de poder ser irritante, pois não se pode facilmente controlar qual aplicativo será fechado. É possível encontrar no Android Market aplicativos que fornecem esta funcionalidade, chamados app killers.

No Android o ciclo de vida do programa tem várias fases, por exemplo: onCreate, chamada uma única vez quando o programa é iniciado. Outras fases relacionadas ao processo de pausar o programa e deixá-lo rodando no plano de fundo: onPause, onStart, onRestart etc. Quando uma mudança de fase ocorre, um método da classe Activity do programa é executado. Esse ciclo pode ser visto na ...

Quer ler esse conteúdo completo? Tenha acesso completo