Querido Diário v2.2016_BETA: Criando meu primeiro aplicativo de Android
O primeiro passo é, naturalmente, a instalação. Na página do kit de desenvolvimento do Android (developer.android.com), baixe o pacote completo (Eclipse+Máquina Virtual+ambiente Android), é um arquivo bem grande (453 MB), então demora um pouco para baixar. No Linux, a instalação consistiu somente de dezipar o arquivo. Para abrir o kit de desenvolvimento, vá na subpasta eclipse e clique duas vezes sobre o programa eclipse.
Ao abrir, ele pergunta sobre a workspace. É nesse caminho que ficarão os arquivos de código gerados e o arquivo final para rodar seu programa (o .apk). Selecione o seu caminho de preferência (dica, se usa dropbox, use uma pasta dentro do seu diretório de sincronia).
Tudo instalado e configurado, vamos partir para o desenvolvimento de um aplicativo simples. A filosofia de programação em Android é similar à de .NET ou qualquer cliente-servidor. A parte de interação com o usuário é feita com um XML (com muitos dos componentes são gerados automaticamente pela IDE, ou seja, pelo Eclipse), fazendo o papel da página web analogamente, e os cálculos são rodados em Java, através de requisições enviadas pelo XML. Isso vai ficar mais claro com o exemplo prático.
O aplicativo consiste em um "Cara ou Coroa", com basicamente duas interfaces:
- A interface inicial, onde o usuário pode tocar em um botão para ativar o programa
- A interface de resultado, que mostra uma moeda com a cara ou o número virado para cima e um botão para repetir o procedimento.
O cálculo não é complicado, basta fazer um programa que sorteie um número aleatório e obtenha o resto da divisão dele por 2. Se o resto for 0, o resultado é cara, se for 1, coroa (ou vice-versa).
Agora, mãos à massa. Os passos seguidos aqui são um resumo do guia presente no developer.android.com. Clique em New Android Application e preencha os espaços para decidir o nome da aplicação (pode deixar os outros campos com o padrão) e avance. Na segunda janela de configurações, também deixe tudo como está e avance. A terceira janela é para decidir o ícone que vai aparecer na lista de programas no celular.
Para se localizar, aqui vai uma explicação sobre os principais dentre vários diretórios criados automaticamente ao criar uma nova aplicação (mais informações na página oficial).
src: arquivos .java para a programação propriamente dita. Possui um arquivo MainActivity.java que cria a tela inicial do programa (o nome MainAcitivity pode mudar, se você alterar algumas das configurações padrão)
gen: possui arquivos gerados, incluindo o importante R.java, que intermedeia algumas operações.
res/layout: os XML que descrevem as telas do programa. Por padrão, tem um activity_main.xml. Ao abrir um dos arquivos dessa pasta, há as opções Graphical Layout e nome_do_arquivo.xml, o primeiro com uma visão gráfica, com possibilidade de arrastar e soltar forms e o segundo com o código gerado para mostrar esses forms.
res/values: para entrar com valores na interface (por exemplo, activity_main.xml), é preciso cumprir a burocracia de criar uma variável e definí-la dentro dessa pasta (por exemplo, strings.xml) ou então a IDE vai dar warning. Abra no activity_main.xml a parte de código e procure pela tag TextView e confira como o texto "Hello World!" está referenciado como uma string dentro da pasta string e não diretamente (android:text="@string/hello_world").
1 - Criação de um botão
Abra o arquivo activity_main e ative o Graphical Layout. Na janela Form Widgets (veja a figura anterior), clique em Button e arraste para a área em branco ao lado. Perceba que ele vai dar Warning, pois ao botão é automaticamente atribuído o text="Button". Vá em values/strings e adicione uma string, de nome botao_ok e valor "OK". Volte ao activity_main e troque android:text="Button" por android:text="@string/botao_ok". Se o Warning não desaparecer instantaneamente, clique no menu superior em Project e selecione Clean.
[I18N] Hardcoded string "Button", should use @string resource:
Warning caso não use uma variável para o texto
2 - Resposta do botão ao toque
No activity_main, adicione o atributo android:onClick="processar" (sim, é sensível a maiúsculas). Vá em sec/MainActivity e adicione o seguinte trecho:
/** Chamado ao pressionar OK */
public void processar(View view) {
// codigo sera inserido aqui
(adaptado de Android Developers)
Ele indicará erro, clique no apontador do erro e corrija importando a classe View. Alternativamente, pressione Ctrl+Shift+o para corrigir erros de importação.
Dentro do método processar, adicione
Intent intent = new Intent(this, Sortear.class);
A IDE deve reclamar de dois erros, um da eportação do Intent, e a inexistência da classe Sortear (View cannot be resolved to a type).
OBS - Configurando o dispositivo de debug
Para fins de teste (e para configurar o dispositivo, real ou virtual, que vai rodar nossos programas), vamos rodar um programa muito simples. Esqueça, por enquanto, o Intent.
//Intent intent = new Intent(this, Sorteio.class);
TextView editText = (TextView) findViewById(R.id.textView1);
String mensagem = editText.getText().toString();
Coloque um breakpoint na linha TextView editText = (TextView) findViewById(R.id.textView1) (para quem não sabe o que é um breakpoint, é só clicar ao lado da linha (na parte laranja). Quando rodar o programa em modo debug, o programa irá parar onde você marcou).
Eu, particularmente, não consegui rodar o dispositivo virtual. Usei um celular para rodar no dispositivo real. Para fazer isso, antes, você deve ir nas configurações do seu celular, em Aplicativos e, depois, em Desenvolvimento, e ativar a opção Depuração USB. Com essa opção marcada, ao conectar seu celular ao computador pelo cabo USB, deve aparecer na área de notificações. Então, quando você mandar rodar o programa (Run, Debug (F11)), o programa irá rodar no seu celular (cria automaticamente, um ícone no seu painel de aplicativos).
Voltando ao nosso teste, clique em Run e Debug e selecione o dispositivo. A tela da interface (um texto e um botão de OK) deve abrir no celular.
Aperte no OK e a execução do programa será pausada no breakpoint (veja a IDE). Aperte em Step Over duas vezes e posicione o mouse em cima da variável "mensagem" do MainActivity.java. Perceba como a variável recebeu o texto de um elemento da interface no Android. A partir dessa ideia, podemos operar entre a interface (XML) e o processamento (Java).
OBS - Criando um dispositivo virtual (Linux)
Ao rodar o dispositivo virtual (Window, Android Virtual Device Manager), tive o seguinte erro:
Solucionei com o comando sudo apt-get install libgl1-mesa-de (mais informações, clique aqui). O Arquivo libGL.so pôde ser encontrado em /usr/lib/i386-linux-gnu