Cadastro Newsletter

A revista do profissional de TI

Parceiros

Asterisk Brasil Br-Linux Clublinux Fuctura Invasão Ubuntu Games Ubuntu-SP Invasão
Yatego Shopping
Yatego - O maior site de comércio eletrônico da Alemanha.
Só o melhor7000 lojas, 2,5 milhões de excelentes artigos Melhores Mais relevantes

Meu carrinho Carrinho vazioIr para a loja
Home » Matérias » Mobilidade Programada II — Programando um rastreador GPS para o Android

Shopping

Certificação LPI-1 3ª Edição
3ª edição revista e ampliada do livro com curso completo para a nova Certificação LPIC-1.
Saiba mais
Technical Review 01 | Virtualização
Aprenda a projetar e implementar infraestruturas de virtualização com Xen, conheça outras soluções de Código Aberto, lendo as workshops profissionais, e maximize o desempenho em TI de sua empresa. Promoção especial de lançamento: de R$ 129,90 por R$ 99,00. Saiba mais
Pocket Shell Script II

Curso de Shell Script, parte II (100 páginas)

Saiba mais

Pocket Shell Script I

Curso de Shell Script, primeira parte (100 páginas)

Saiba mais

Pocket Desenvolvimento Web
100 páginas de informação
Crie aplicações multiplataforma com as ferramentas revolucionárias da Web 2.0.
Saiba mais

Pocket Asterisk e VoIP
100 páginas de informação.
Tutoriais e técnicas para implementar soluções VoIP profissionais, configurar hardware de telefonia da Digium e muito mais.
Saiba mais

Coleção Linux Pocket Pro | Virtualização
100 páginas de informação, tutoriais e técnicas para entrar no mundo da virtualização com Xen. Saiba mais

Coleção Linux Pocket Pro | Hardware
100 páginas de informação, tutoriais e técnicas para entrar no mundo do hardware para computadores. Saiba mais

Coleção Linux Pocket Pro | Administração de Redes
100 páginas de informação, tutoriais e técnicas para entrar no mundo da administração de redes Linux. Saiba mais

Coleção Linux Pocket Pro | Gerenciamento e desenho de Projetos
100 páginas de informação, tutoriais e técnicas para entrar no mundo de gerenciamento de projetos. Saiba mais

Coleção Linux Pro | Certificação LPI-1
Preparação completa para certificação LPI nível 1. Promoção especial de lançamento: de R$99,00 por R$79,90.
Saiba mais
Versão impressa esgotada
Coleção Linux Pro | Certificação LPI-2
Preparação completa para certificação LPI nível 2. Promoção especial de lançamento: de R$99,00 por R$79,90. Saiba mais
Versão impressa esgotada
Linux Pro LPI: dois livros pela metade de um
Comprando o livro LPI-1 com desconto de 37% por apenas R$50,00, você ainda ganha o livro LPI-2! Saiba mais
Versão impressa esgotada
Linux Pro Ubuntu
Guia de adoção do Ubuntu LTS no ambiente doméstico e corporativo. Promoção de lançamento: de R$ 99,00 por R$ 79,00. Saiba mais
Certificação LPI-2 2ª Edição
2ª edição revista e ampliada do livro com curso completo para a nova Certificação LPI-2. Promoção de lançamento: de R$ 110,00 por R$ 99,00
Saiba mais
Livro LPI-1 + LM #60 + LME PDF #1 #2 #3
Pacote promocional: Livro Certificação LPI-1, Revista Linux Magazine #60 e as três primeiras edições da Linux Magazine Especial em PDF. Saiba mais
Linux Pro Ubuntu + Easy Linux 16
Livro Linux Pro Ubuntu + Easy Linux #16. De R$ 89,90 por R$ 39,90 ( 55% de desconto). Saiba mais
Certificação LPI-1 3ª Edição + Chinelo Tux
Certificação LPI-1 3ª Edição + Chinelo Tux Saiba mais
Certificação LPI-2 2ª Edição + Chinelo Tux
Certificação LPI-2 2ª Edição + Chinelo Tux Saiba mais
Linux Pro Ubuntu + Chinelo Tux
Linux Pro Ubuntu + Chinelo Tux Saiba mais
Coleção Linux Pocket Pro | Kit com os livros 1 a 4
Gerenciamento de projetos, Redes, Hardware e Virtualização, tudo numa única caixa por um preço especial.
50% de desconto: de R$ 56,90 por R$ 29,90!
Saiba mais
Coleção Linux Pocket Pro | Kit com os livros 1 a 8
Todos os oito livros da coleção Linux Pocket Pro por apenas R$ 49,00. Saiba mais
LPI-1 3ª ed. + LPI-2 2ª ed.
LPI-1 + LPI-2 por apenas R$ 79,00. Saiba mais
Coleção Linux Pocket Pro | Kit com os livros 5 a 8
Linux Pocket Pro, livros 5 a 8, por apenas R$ 19,90. Saiba mais
LME 03 | VoIP com Asterisk

Essa edição aborda as tecnologias e soluções VoIP disponíveis para que você equipe sua empresa com o que há de mais moderno, eficiente e amigável, além de barato, é claro. Aprenda a instalar e configurar um servidor Asterisk com os principais recursos: Discagem Direta para Ramais – DDR –, Unidade de Resposta Automática – URA –, Distribuição Automática de Chamadas – DAC –, filas de atendimento, caixa postal de voz, planos de discagem e muito mais.

Também entrevistamos os executivos dos maiores fornecedores de equipamentos e das principais operadoras VoIP para você ficar a par de suas estratégias de mercado e descobrir qual se alinha melhor aos objetivos da sua empresa.


LME 02 | Thin Clients

Seja reaproveitando hardware comodity, seja utilizando dispositivos próprios para a implementação de sistemas de terminais leves, o Linux e o Código Aberto tem tudo a ver com esse mercado. Nesta edição especial da Linux Magazine mostramos diversas soluções para a implementação de redes de terminais leves, sempre pensando em excelentes padrões de desempenho e em ótima relação custo­-benefício.


LME 01 | Redes e Sistemas

A administração de sistemas é uma ciência ativa e multifacetada e é necessário mais do quer logs ou acompanhar os relatórios do Nagios para se considerar um iniciado nessa arte. É por isso que dedicamos ao sysadmin e a administração de sistemas nossa primeira edição da Linux Magazine Especial. Com cada uma das seções da revista iniciadas por um artigo de Augusto Campos, nosso colaborador assíduo em sua Coluna do Augusto, pretendemos abordar cada uma das facetas da administração de sistemas.


Matéria

Mobilidade Programada II — Programando um rastreador GPS para o Android

Publicado em 12/02/2009 às 1:04

Versão para impressão Enviar por email

Publicidade

A evolução do IPS

Os sistemas de prevenção/proteção contra intrusão (IPS) não são mais os mesmos
Faça o download do Whitepaper

Por Oliver Frommel

A versão 1.1 do SDK do Android acabou de ser lançada, e corrige alguns erros da versão anterior, além de introduzir melhorias de compatibilidade do celular G1, que já pode rodar a nova versão 1.1.0 do Android. Há alguns dias publicamos um artigo inicial, que mostrava como preparar adequadamente um ambiente de desenvolvimento de aplicativos para o Android. Neste segundo artigo da série, vamos mostrar como desenvolver um programa de apenas poucas linhas de código, mas que é capaz de ler e exibir coordenadas GPS.

Com o SDK do Android e o plug-in para o Eclipse, é relativamente simples desenvolver aplicativos para celulares equipados com a plataforma operacional baseada em Linux desenvolvida pelo Google. As ferramentas contidas nesse kit de desenvolvimento funcionam bem, são fáceis de usar e a API é bem estruturada e documentada. Além disso, há na Internet uma grande quantidade de exemplos para todo o tipo de aplicação. Entretanto, é necessário estar atento ao fato de que o código-fonte de muitos desses programas é compatível com a versão anterior do sistema, mas não com a versão atual, recém-lançada. Conforme escrevemos acima, o aplicativo que vamos desenvolver neste artigo terá por função estender a estrutura do programa criada automaticamente pelo Eclipse no artigo anterior, tranformando-a em um aplicativo rastreador GPS, capaz de fornecer as coordenadas da posição geográfica atual.

Usando o ambiente instalado no artigo anterior, composto basicamente do kit de desenvolvimento do Android e o plug-in do Eclipse, é possível compilar um aplicativo rudimentar e executá-lo no emulador que faz parte do SDK. Caso um G1 “de verdade” seja conectado via USB ao PC ou laptop com Linux dotado com o ambiente de desenvolvimento, pode ser que ele não seja detectado pelas ferramentas do Android que o Eclipse roda em background, para — por exemplo — carregar aplicativos para o equipamento. A solução para contornar esse problema é configurar corretamente o subsistema udev, responsável pela criação e pelas permissões de arquivos de dispositivos no Linux. A seguinte regra fornece as permissões corretas ao arquivo de dispositivo criado quando o G1 é conectado ao computador:

SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"

Basta incluir a linha acima no arquivo /etc/udev/rules.d/50-android.rules e tornar esse arquivo executável, e daí por diante tudo deveria funcionar corretamente.

Como a figura seguinte mostra, o código gerado pelo Eclipse quando configuramos o sistema no artigo anterior, ficou bastante sucinto.

Ambiente Eclipse
Código gerado automaticamente pelo Eclipse, quando da criação do projeto do aplicativo que será desenvolvido, logo após a instalação do SDK e do plug-in.

A própria classe hello estende a classe Activity do sistema, que está prevista para uso em aplicativos de interface gráfica padrão. O pouco que resta do código está no método de retorno de chamada (callback) onCreate(), que é executado quando o aplicativo é inicializado. Após a chamada do método de retorno de chamada da classe pai, resta apenas ativar o modo de exibição na componente de layout main. O Eclipse deixa esse tipo de recurso armazenado no arquivo R.java, que é atualizado constantemente. Modificações nesse arquivo devem, assim, ser evitadas, para que não ocorram conflitos.

Para imprimir o clássico Olá mundo! no visor do celular, não é necessário nada além de um TextView, que deve então ser ativado como elemento de exibição atual. A cadeia de caracteres a ser apresentada no visor é fornecida ao objeto TextView pelo método setText().

TextView tv = new TextView(this);
tv.setText("Hello Android");
setContentView(tv);

Se o que se deseja é mais do que exibir um texto sem graça no visor — por exemplo, a posição geográfica atual do celular —, é necessário estar familiarizado com o conceito de “ouvinte” (listener). Em várias ocasiões, esse conceito serve de interface para determinados eventos — regulares ou ocasionais —, tais como o fornecimento de dados pelo usuário. O programador deve criar suas próprias funções como ouvintes de determinados eventos, de modo que essas funções sejam executadas quando o evento ocorrer. A plataforma Android assegura que os aplicativos não consumam tempo de processamento desnecessariamente, mas que permaneçam em estado latente, reagindo prontamente quando o evento designado para ela aconteça.

Uma característica notável da API do Android é que ela está perfeitamente adaptada ao desenvolvimento de aplicativos específicos para o G1. Assim, bastam algumas poucas linhas de código, para que se possa determinar a atual posição geográfica do celular via GPS. Para isso, basta criar um novo LocationProvider e associar a ele, através de um de seus métodos, uma função customizada — no nosso caso, locationListener, que é chamada de modo recorrente de tempos em tempos.

LocationProvider provider = lm.getProvider("gps");
lm.requestLocationUpdates("gps",
        60000, // 1min
        1,   // 10m
        locationListener);

Além do uso das coordenadas do GPS, há também outros tipos de LocationProvider, que por exemplo conseguem obter a posição geográfica de maneira mais precisa a partir da célula em que o telefone se encontra. A nossa função customizada LocationListener só precisa ler a latitude e a longitude através dos métodos do objeto de localização geográfica e fornecê-las ao objeto TextView:

private final LocationListener locationListener = new LocationListener() {
      public void onLocationChanged(Location l) {
         TextView tv = new TextView(LnmTrakr.this);
         tv.setText("lat: " + l.getLatitude() + "\nlon: " + l.getLongitude());
         setContentView(tv);
      }
      ...

Como esse código cria empiricamente uma classe anônima, é necessário que a TextView faça uma referência à classe mais externa usando LnmTrakr.this. Para simular o funcionamento do equipamento de GPS no emulador do celular, é necessário realizar uma conexão via telnet ao emulador — usando para isso o comando telnet localhost 5554 — e, no console que se abrir, fornecer as coordenadas usando a seguinte sintaxe: geo fix 20 40.

Programa em execução, mostrando a latitude e a longitude no emulador do SDK.
Programa em execução, mostrando a latitude e a longitude no emulador do SDK.

Ao rodar esse aplicativo no emulador ou no próprio celular, percebe-se logo que não há como fechar esse programa. Com mais alguma linhas de código pode-se dotar o aplicativo de um menu próprio com um botão de “Sair”. O código abaixo ilustra como criar um menu com diversas opções de entrada (algumas delas estão “comentadas”, isto é, desativadas):

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);

    menu.add(Menu.NONE, 0, 0, "Exit");
    //menu.add(Menu.NONE, 1, 1, "Settings");
    //menu.add(Menu.NONE, 2, 2, "Other");
    return true;
}

Com o manipulador de eventos apropriado, o programa pode ser encerrado, bastando para isso que se selecione o “0” no menu:

public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()) {
    case 0:
        finish();
    }
    return false;
}

Ambiente Eclipse
O Google quer coletar dados sobre o uso do Android. Claro, se não quisesse, não seria o Google...

Assim, com apenas algumas linhas de código, um primeiro aplicativo — capaz de realizar várias tarefas — foi finalizado. O código fonte em Java do arquivo principal pode ser baixado aqui. Apenas mais algumas linhas de código e o aplicativo torna-se capaz de — adivinhe — mostrar a posição geográfica atual no Google Maps. Ao finalizar o Eclipse, o Google preparou uma janela extra, com o intuito de lhe pedir permissão para realizar estatísticas sobre o seu uso do Android.

O programador pode escolher não conceder essa permissão — ao contrário do usuário do G1, que não tem essa opção.

Saiba mais:

Compartilhe


Comentários

Entre seus dados para comentar a matéria:


Esqueceu a senha?
Cadastro

Outras matérias

Linux 2.6.33Publicado em 04/03/2010 às 14:25Confira o que a versão mais recente do kernel Linux 2.6.33 traz de novo.Leia mais...
Particionamento ideal no UbuntuPublicado em 03/03/2010 às 17:14Quer atualizar o sistema sem perder nenhuma das suas configurações pessoais (papel de parede, ícones da área de trabalho)? Então leia este artigo e aprenda a "criar um /home separado no Ubuntu".Leia mais...
Controle de usuários com GNU Accounting UtilitiesPublicado em 29/01/2010 às 9:16Para gerenciar servidores Linux com mais qualidade e segurança, é necessário saber tudo que acontece e como acontece. Para nos ajudar nessa tarefa, podemos usar as GNU Accounting Utilities, mais conhecidas por acct.Leia mais...
“Liberdade não é liberdade de escolha” – assim falou Richard StallmanPublicado em 18/06/2009 às 20:23Em sua atual passagem pelo Brasil, Richard Stallman concedeu à Linux Magazine uma agradável entrevista. Ele falou sobre SCO, Sun, Oracle, a liberdade de software e o conflito com aqueles que desejam subverter o significado de “Free Software” (Software Livre), usando em seu lugar o termo “Open Source” (Código Aberto) – além de críticas à Microsoft e ao software proprietário como um todo, é claro.Leia mais...
Análise do novo Ubuntu 9.04Publicado em 27/04/2009 às 4:43

Pontualmente na data de lançamento programada — que acontece em um ciclo de seis meses — foi lançada a nova versão do Ubuntu, a 9.04, codinome Jaunty Jackalope. Devagar — mas sempre —, a distribuição patrocinada pela Canonical avança em usabilidade, desempenho e beleza. Este artigo traz uma análise do novo Ubuntu, apresentando as maiores novidades da versão 9.04.

Leia mais...
Xen: Entrevista com CTO de virtualização da Citrix e com gerente da comunidade XenPublicado em 20/04/2009 às 15:05

Entrevista com Simon Crosby, CTO da divisão de virtualização e gerenciamento da Citrix, e Stephen Spector, gerente de comunidade Xen.org

Leia mais...
Kernel 2.6.29: O Linux está com o diabo (da Tasmânia)!Publicado em 24/03/2009 às 20:04Novo kernel, novo recorde. Com mais de 1 milhão de novos trechos de código, o Linux 2.6.29 chega repleto de novidades para todos os usuários.Leia mais...
Análise do Debian 5.0 “Lenny” [ATUALIZADA]Publicado em 16/02/2009 às 2:53

Quase dois anos após o lançamento da versão 4.0 (codinome “Etch”) — e pouco depois do lançamento de sua sétima revisão —, a equipe de desenvolvimento do projeto Debian lançou finalmente a versão 5.0 (codinome “Lenny”) de uma das distribuições GNU/Linux mais conceituadas entre os profissionais habituados a trabalhar com o sistema do pinguim. Com nossa análise você ficará sabendo o que mudou, o que melhorou, se algo piorou e como está a nova versão do Debian.

Leia mais...
Mobilidade programada — Programando aplicativos móveis com o SDK do Android no EclipsePublicado em 08/02/2009 às 12:56

Recentemente, publicamos o artigo Programe seu andróide, com o qual é possível aprender como desenvolver um primeiro aplicativo para o “celular do Google”. A partir de agora, vamos publicar uma série de artigos, em um formato que ilustrará passo-a-passo, como desenvolver programas para o Android, sendo que cada um dos artigos se ocupará apenas de uma parte do processo de criação de programas para a plataforma.

Leia mais...
Mais matérias