Conectando-se ao mundo com seu celular

Uma visão rápida do uso de GPRS para acesso a dados

Conectando-se ao mundo com seu celular

Uma visão rápida do uso de GPRS para acesso a dados

 

                                                                                                                             Mendo Leonel

 

Salve amigos, primeiro gostaria de falar-lhes que é um enorme prazer pode contribuir para essa publicação que possui um espaço voltado para dispositivos móveis, essa mobilidade e as possibilidades que esses aparelhos estão nos abrindo são fantásticas. Sou um entusiasta dessa tecnologia, e me fascino sempre com os novos avanços, espero conseguir transmitir um pouco desse entusiasmo e conhecimento que pude obter nesses pouco mais de 2 anos, os quais pude, literalmente, quebrar a cabeça para solucionar alguns problemas, dentre eles a falta de conhecimento e a pouca difusão do assunto.

 

Hoje, tenho certeza que muitos de vocês, “escovadores de bits”, já ouviram falar, ou até mesmo, já usaram seus celulares para enviar ou receber dados, seja em aplicações já disponíveis nos aparelhos, seja utilizando aplicações desenvolvidas por vocês ou terceiros. Estamos caminhando, a passos largos, com a idéia de mobilidade, já é possível transmitir dados através do celular a velocidades maiores que nossas velhas, porém agora ultrapassadas, placas de modem.

 

Tenho recebido várias mensagens com perguntas sobre como fazer para comunicar com um serviço através de GPRS, e é sobre esse assunto que me proponho a compartilhar com vocês a minha experiência. O que tenho para passar para vocês é fruto de um trabalho duro, e acabei decidindo por transformá-lo em palestra no último Just Java, mas não vamos mais perder tempo, vamos ao que interessa.

 

Um pouco da tecnologia

A primeira pergunta que podemos nos fazer é: O que é GPRS?

Em inglês General Packet Radio Service, ou em uma tradução simplória, serviço de pacotes de rádio. GRPS é um protocolo de comunicação que habilita que informações sejam enviadas e recebidas através de uma rede de telefonia móvel, e podemos dizer que foi introduzido entre a 2ª e 3ª geração de celulares.

 

A forma de transmissão mais eficiente é conhecida como packet switched transmission, essa transmissão é feita  separando os dados em pequenos pacotes e enviando-os em ordem para o seu destino. Já no destino os pacotes são novamente montados formando assim a mensagem. Essa forma de transmitir dado assegura o compartilhamento dos recursos disponíveis entre usuários diferentes. Uma das vantagens mais atraentes e o fato da sua conexão ficar ativa sempre (depende de configuração do aparelho, em alguns aparelhos existe configuração de time-out), não sendo necessária um dial-up ou coisa parecida. E o melhor dessa conexão ativa é que não gera nenhum custo adicional, como pulso, por exemplo, em desktops com conexão discada, nem muito menos degrada o desempenho da rede de comunicação, e quando necessário os dados são enviados ou recebidos de forma quase instantânea.

 

Em teoria a velocidade máxima de transmissão de uma conexão GPRS é de 171.2 kbps, essa velocidade é 3X mais rápida que as velocidades de conexão com fax/modem comuns utilizados hoje em nossos computadores, e 10X mais rápida que a circuit switched data (CSD veja quadro de significados), de uma conexão GSM.

 

Os aparelhos que suportam essa tecnologia podem ser classificados em três classes:

·Classe A – Permitem que sejam transmitidos chamadas de voz e dados ao mesmo tempo;

·Classe B – Automaticamente alternam entre voz e dados, dependendo das configurações do aparelho;

·Classe C – Onde a troca entre dados e voz é feita manualmente.

 

Atualmente é fácil encontrar aparelhos da classe B para serem comercializados, esses aparelhos ainda dão prioridade a chamadas de voz, significa dizer que se o aparelho estiver efetuando uma transmissão de dados e receber uma chamada de voz, o mesmo interrompe momentaneamente a transmissão de dados e alterna para voz. Ao finalizar a chamada de voz a transmissão de dados é retomada.

 

Na figura abaixo podemos ver uma ordem cronológica do surgimento de cada tecnologia, observe o ano em que lá fora o GPRS começou, e quanto tempo depois estamos tratando do assunto como se fosse à última geração da tecnologia. Isso não é falta de interesse ou por que as informações demoram a chegar ao Brasil, pois ultimamente com os meios de comunicação disponíveis, as informações literalmente voam, e voam na velocidade de um simples e-mail ou acesso a uma página da internet. Estamos atrasados sim, quando falamos em infra-estrutura que possa disponibilizar a tecnologia a ser usada, mas isso é outra conversa, vamos nos concentrar em entender como funciona o GPRS, pois com ele já é possível desenvolvermos aplicações com acesso a dados ou serviços em tempo real.

 

 

 

Configurando meu celular

Para utilizarmos uma transmissão de dados em celulares, muitas vezes basta fazer poucas configurações. Precisamos ter uma APN (Access point name) ou  ponto de acesso. Ponto de acesso  é a forma de referenciarmos a conexão entre um aparelho e uma rede IP externa necessária para estabelecer uma conexão com a rede GPRS. É como se trocássemos o uso do número de um provedor de acesso dial-up para uma identificação, tornando possível a conexão com a internet. As APNs são configurações que dependem de cada operadora e dependendo do modelo do celular, podemos configurar várias APNs de conexão e indicar qual desejamos utilizar.

 

Abaixo temos dois exemplos de configurações possíveis.

·APN (Access point name)

oClaro.com.br

oTim.br

·         Exemplo de configuração

oNome da conexão: Claro Dados GPRS
Número de discagem: *99***1#
Nome do Ponto de Acesso (APN): claro.com.br
Usuário: claro
Senha: claro

 

oNome da conexão: Tim Dados GPRS
Número de discagem: *99***1#
Nome do Ponto de Acesso (APN): tim.br
Usuário: tim
Senha: tim

 

Glossário

 

GSM – Global System for Mobile communications, Segunda geração da tecnologia digital originalmente desenvolvida para a Europa e que ganhou força em todo o mundo. Inicialmente desenvolvido para operar em uma banda de 900MHz e posteriormente modificada para 850, 1800 e 1900MHz. Ficou muito popular por usar chip e a clonagem dos celulares serem quase impossíveis (nunca ouvi falar que um aparelho com chip tenha sido clonado, mas nunca ou impossível, são palavras muito fortes).

 

CSD – Um método que é utilizado em telecomunicações para estabelecer uma conexão entre dois dispositivos, principalmente para tráfego de voz.

 

HSCSD - High Speed Circuit Switched Data; um modo especial nas redes GSM para fornecer maior velocidade de tráfego de dados.

 

EDGE - Enhanced Data rates for GSM Evolution, um estágio a mais na evolução do padrão GSM, EDGE usa um novo esquema de modulação que teoricamente habilita transmissão de dados a velocidades acima de 384kbit/s em uma rede GSM.

 

UMTS - Universal Mobile Telecommunications System, Terceira geração de celulares, com transmissões em alta velocidade, tornando possível a transmissão de dados, voz e imagem, com performances antes não alcançadas.

 

 

Por que usar GPRS?

Algumas das vantagens já foram apresentadas até aqui, mas vamos enumerar algumas que considero importante:

1.Velocidade – vimos que a velocidade teórica é muito mais rápida que as conexões discadas a qual usamos, apesar de não alcançarmos essa velocidade, pois, para isso teríamos que utilizar todos os slots disponíveis para transmissão de dados. As operadoras afirmam ter realizado testes onde as velocidades médias atingidas ficam em torno de 44 kbps, já é uma velocidade considerável, ainda mais se lembrarmos que apesar da placa de fax/modem ser de 56 kbps, as mesmas também não chegam a sua velocidade máxima.

2.Sempre conectado – as conexões podem ficar abertas sem custo adicional, assim ao contrário do que acontece com as placas de fax/modem, quando necessitamos fazer consultas, o processo fica bastante otimizado.

3.Baixo custo de transferência de dados – o custo para a utilização de transmissão de dados, depende da operadora, porém esse custo é relativamente baixo se comparado com serviços similares. Por exemplo, na Claro o megabyte trafegado custa R$ 5,00 e na Tim o custo é de R$ 5,24, considerando que o tráfego de dados de uma aplicação seja de 1kb, poderíamos fazer cerca de 1000 consultas para gastar R$ 5,00, basta agora você fazer as contas de quanto gastaria se o mesmo serviço fosse feito com modem comum.

4.Uso eficiente da rede – com o GRPS a rede fica livre enquanto não é necessário enviar nem receber dados, liberando recursos de rede para os outros usuários.

 

Onde posso usar GPRS?

Podemos usar GPRS em vários tipos de aplicações, dentre elas:

·Internet browser e e-mail;

·Chat;

·SMS;

·Aplicações Java que necessitam conexão;

·Utilizar o telefone como modem;

·Jogos on-line.

 

Generic Connection Framework – Implementando um exemplo

A figura abaixo mostra toda a hierarquia da GCF. Esse conjunto de API facilitam bastante a vida do programador Java, ou melhor dizendo, J2ME. Para todo e qualquer tipo de conexão vamos utilizar a GCF, com ela podemos ler através da serial, conectar em um socket e acessarmos um link http.

 

 

 

Na implementação MIDP 2.0, somente a interface httpConnection é obrigatória, portanto seja cauteloso ao utilizar outras implementações.

 

Para abrir uma conexão é simples, todas as conexões são feitas através da classe Connector, e essa classe possui apenas 7 métodos ( veja quadro Classe Connector).

 

Classe Connector

 

static Connection open(String name)

static Connection open(String name, int mode)

static Connection open(String name, int mode, boolean timeouts)

static DataInputStream openDataInputStream(String name) Create and open a connection input stream.

static DataOutputStream openDataOutputStream(String name) Create and open a connection output stream.

static InputStream openInputStream (String name) Create and open a connection input stream.

static OutputStream openOutputStream (String name)Create and open a connection output stream.

Os três primeiros métodos abrem a conexão, sendo diferenciados pelos seus argumentos, no primeiro somente o endereço é passado, no segundo o argumento mode representa a forma de acesso, exemplo read/write e o terceiro indica um time-out e se o mesmo ocorrer será lançada uma exceção.

 

Os outros métodos são fluxos de entrada e saída.

 

Não nos resta mais nada a fazer se não codificar o exemplo.

 

Exemplo

 

private String consultaHttp() {

    HttpConnection conn;

    InputStream strIn;

    StringBuffer str;

    int tam;

 

    try {

      conn = (HttpConnection) Connector.open(HelloWorld.instance.URL);

      conn.setRequestMethod(HttpConnection.POST);

      strIn = conn.openInputStream();

 

      if (conn.getResponseCode() == HttpConnection.HTTP_OK) {

        tam = (int) conn.getLength();

        if (tam != -1) {

          byte dados[] = new byte[tam];

          strIn.read(dados);

          return new String(dados);

        }

        else {

          str = new StringBuffer();

          while ((tam = strIn.read()) != -1) {

            str.append((char) tam);

          }

          return str.toString();

        }

      }

      else {

        return "Problemas na conexão: " + conn.getResponseMessage();

      }

    }

    catch (IOException ex) {

      ex.printStackTrace();

      return "Ocorreu um erro \n" + ex.getMessage();

    }

  }

 

Vamos a uma rápida explicação do código, são criadas duas variáveis: conn, strIn. Elas serão nossa conexão e fluxo de entrada respectivamente. Logo em seguida abrimos nossa conexão utilizando uma variável da instância da classe HelloWorld, HelloWorld.instance.URL, essa variável poderia ser substituída por uma string contendo uma URL. A instrução “strIn = conn.openInputStream();” abre o fluxo de entrada e a próxima linha verifica qual foi a resposta do servidor para a requisição de abertura da conexão com a URL, nossa conexão é http, portanto o retorno será no padrão http.

 

A instrução “tam = (int) conn.getLength();” tenta recuperar do servidor a quantidade de bytes a serem transmitidas, se o tamanho for conhecido poderemos ler de uma só vez a quantidade de bytes transmitidos e assim poupar tempo de execução, caso contrário teremos que ler byte a byte até o fim do fluxo. Nosso método retorna a string lida da URL ou a mensagem de erro obtida.

 

Esse é um exemplo simples, mas saiba que é possível efetuar downloads de imagens, jogos e aplicações, fazer conexões a páginas publicadas, servlets ou web services, e com a exceção dos Web services que precisam de algo mais para enviar e receber mensagens no padrão SOAP, todas as outras podem ser feitas utilizando os mesmos métodos desse exemplo simples com poucas modificações.

 

Tornando sua aplicação “respondível”

Para tornar sua aplicação mais robusta e profissional, tenha sempre em mente:

·Criar Threads e mostrar tela de processamento para o usuário – Lembre que estamos falando de celular e dispositivos móveis, nem sempre o usuário irá ter paciência de esperar se a tela parecer congelada. É uma boa prática utilizar Thread, para demonstrar para o usuário que a aplicação está executando algo. Consultas podem ser demoradas, e dependendo da aplicação elas podem ser executadas em segundo plano, longe da vista do usuário, e somente quando obtiver um resultado, seja de falha ou de sucesso, a aplicação mostrará algo;

·Sempre que possível utilizar método POST ao invés de GET – Consultas com httpConnection seguem as regras já impostas pela internet, portanto se utilizarmos o método GET estaremos passando as informações juntas com a URL, mesmo que a rede de telefonia móvel seja protegida, segundo informações que obtive, no caso de serem interceptadas, todos os seus dados o serão também, por isso procure sempre utilizar o método POST, dessa forma dificultaria um pouco mais;

·Para garantir uma maior portabilidade utilize a interface HttpConnection;

·Quanto menos dados trafegar, mais barato será – como vimos nas vantagens de usar o GRPS, o valor que será pago depende de quanto sua aplicação trafega, então procure otimizar ao máximo o tráfego, minimizando o custo e agregando valor ao seu produto.

 

Conclusões

Acho que o futuro é agora, estamos vivendo uma verdadeira mudança, na maneira de ver a informação, de como ela chega até nós. Estamos caminhando para um mundo realmente on-line e em qualquer lugar (anywhere), tudo isso ao alcance da mão.

 

Espero que tenha sido proveitoso, mas é o primeiro passo, já temos chegando aqui no Brasil outras tecnologias que vão proporcionar mais velocidade como EDGE e UMTS, em algumas operadoras e dependendo do aparelho já é possível fazer transmissões via EDGE.

 

Um abraço a todos e até uma próxima vez.

 

Links

 

http://www.nokia.com/nokia/0,1522,,00.html?orig=/gprs/

Site da Nokia

 

 

http://www.gsmworld.com

GSM World

 

                                                       

 

Mendo Leonel (mendol@presence.com.br) Graduado em Ciências da Computação, Pós-Graduado em Engenharia de Software, certificado SCJP 1.4, palestrante no Just Java 2005, trabalha com desenvolvimento de aplicações a 10 anos, atuando em diversos tipos de projetos desde client/server, aplicações em camadas e aplicações móveis. Atualmente é gerente de tecnologia da Presence Tecnologia, empresa parceira da Borland e distribuidora oficial do Interbase no Brasil.

Artigos relacionados