As emocionantes aventuras de um sysadmin linux na procura pelo uptime perfeito!

Programando Androids – Parte 1

Posted: maio 5th, 2009 | Author: coredump | Filed under: Programação | Tags: ,

android_t1Nos últimos dias eu vendi meu HTC Tytn II e troquei por um T-Mobile G1 rodando Android. Tenho de dizer que de todos os sistemas operacionais para telefones que eu já usei, o Android é o que mais me deixou satisfeito. Ainda faltam uns cantos para serem lapidados, mas de saída ele já é bem melhor que Symbian e Windows Mobile.

De quebra, eu resolvi baixar o SDK do Android para dar uma olhada e acabei programando um bocadinho e pegando gosto pela coisa. Mesmo sendo Java. Eu tenho (tinha?) uma certa ojeriza de Java mas como a unica opção para o Android era essa, fazer o quê né. Resolvi escrever esses posts porque a medida que eu for entendendo e descobrindo novas coisas eu acabo revisando o conhecimento.

Tipos de aplicações Android:

Quando você faz uma aplicação Android, ela pode ser formada de Activities, Content Providers, Intents ou Services. Se não me engano, você pode inclusive ter vários destes em uma única aplicação.

Activities (Atividades) são basicamente janelas ou coisas visíveis do seu programa. Um diálogo, uma janela mostrando dados ou widgets para entrada de dados, etc.. Tudo isso são Activities.

Content Providers (Provedores de Conteúdo) são ‘ganchos’ que você cria em seu programa para disponibilizar informações para outros programas. O Android tem um conceito bem compartimentado, cada aplicação tem seu próprio processo, espaço em disco e memória, os Content Providers fornecem uma forma de disponibilizar informações de seus programas para outros.

Intents (Intento ou Intenção) são a versão Android de mensagens entre processos e eventos. Basicamente um Intent é um ‘sinal’ que é enviado DA sua aplicação ou PARA a sua aplicação. Por exemplo, quando uma mensagem SMS chega, um Intent é disparado para avisar a todas aplicações dessa mensagem, sua aplicação por exemplo pode observar esse Intent e fazer algo para responder ao mesmo. Da mesma forma, você pode criar um Intent na sua aplicação que será enviado ao sistema (e a alguma aplicação que esteja esperando por ele).

Services (Serviços) são os programas que ficam ‘na memória’ e não tem uma janela ou diálogo. Como os daemons do linux/unix. Serve para repetir aquelas tarefas que tem de acontecer mesmo com o programa não estando ativo, como checar emails, continuar tocando música depois de fechar a tela do player propriamente dida.

Para todos estes tipos de aplicações, estão disponíveis todos os recursos do Android: Armazenamento (na memória interna ou no cartão SD), Rede, Multimídia (câmeras, decodificadores de vídeo e áudio via hardware), GPS e serviços telefônicos como envio de SMS e chamadas.

Em tempo: os posts seguem a mesma estrutura do livro “The Busy Coder’s Guide to Android Development“. Ótimo livro para iniciantes. O serviço de assinatura dele é legal, você paga 35 dólares e por um ano tem acesso aos PDF’s de todos os livros e atualizações.

4 Comments »

Reclamação de gente velha

Posted: outubro 31st, 2008 | Author: coredump | Filed under: Linux e Open Source | Tags: , ,

Então, este post é um rambling então se não estiver afim de ler reclamação nem leia.

Ontem eu pensei em programar denovo. É uma coisa que me relaxa, divertida, e que dá pra fazer entre uma partidinha de Warhammer Online e outra.

Pensei em fazer um programinha para organizar análise de risco e talvez importar os dados do OpenVAS e outras ferramentas e fazer algo com eles, tipo uns relatórios ou gráficos. Coisa boba, nada que fosse ser um projeto sério e tal, mais para me divertir e passar tempo (é, tem gente que considera programação uma diversão, deal with it). Um requisito é que eu queria programar em multiplataforma. Primeiro porque em casa eu uso Windows e segundo porque atualmente eu acho cada vez mais tosco fazer programas voltados a OS específico.

O problema é que eu estou velho. Pelo menos com relação a algumas coisas de computadores. Nos idos de 2000 eu tinha a paciência necessária para instalar um programa qualquer do fonte e ainda debugar erros do autor. Atualmente, com os Ubuntus e Debians da vida, eu quero é instalar um software que just works.

Pensei em aprender uma nova linguagem. Talvez Mono C# (vulgo .NET). Mas desisti porque nada bate a beleza de Python.

Daí aconteceu a primeira desgraça. Achar uma IDE para python. Porque com a velhice, vem a frescura. Meus maiores projetos em Python foram feitos ali, na raça, svn no terminal, editando no Vim que quando muito tinha syntax highlight. Atualmente eu quero é sombra e agua fresca, tipo o recurso de completar código que ja mostra os métodos para uma classe, SVN direto na IDE e commits com um clique. E eu queria uma IDE que rodasse em Linux e Windows, porque ter um ambiente único para desenvolver é uma coisa legal.

É frescura? É. Vou morrer sem? Não. Mas porque outras linguagens tem isso de forma tão fácil e eu tenho de ficar sofrendo? Ainda mais quando eu quero programar para me divertir e não para colocar comida na boca do meu filho.

Tentei a SPE, voltada demais a QT (e eu uso GTK+, cacete). Testei a Pida mas se eu quisesse editar com Vim eu usava o Vim. O que mais se aproximou foi o Eclipse com PyDev. Instalei certinho no Ubuntu e tal. Daí já vem problema. PyDev tem problemas com o python-support que o Debian (consequentemente o Ubuntu) usam e não completava código GTK. Fucei até funcionar e descobrir que completar código tem problemas coisas assim (exemplo parcial e tosco):

ui = gtk.glade.XML(‘arquivo.glade’)

janela = ui.get_widget(‘window1′)

janela.

Neste ponto, o que eu esperava é que o completador de código me desse os métodos de um objeto GtkWindow, porque ‘window1′ no .glade é uma GtkWindow. Mas o PyDev aparentemente não consegue achar isso (porque java é estático e python é dinâmico).

A frescura atacou e ja tinha dado  18:30, hora de ir embora.

Cheguei em casa, instalei o Eclipse, instalei o python 2.5 (que já foi 64 bits!) e o GTK Runtime, todo feliz achando que dali a pouco estaria programando.

Descobri que o pygtk não instala em Windows Vista.

Gah!

Notei também que eu tenho de usar o Python 64bits e usar o py2exe, o exe vai ser criado 64 bits e não vai rodar em 32.

Acho que a solução vai ser .NET mesmo. Ou Java. Eu posso usar o NetBeans ou o Eclipse no Windows ou no Linux, escrever um programa e mandar ele pra qualquer outro OS sem ter de quebrar cabeça demais.

Claro, se eu quisesse programar pra ganhar dinheiro ou coisa assim, eu instalava Linux em casa. Ou o XP. Mas não é essa minha reclamação, o lance é que devia ser mais simples programar em/para multiplos OSes.

intel

4 Comments »