Este artigo apresenta uma aplicação Android que faz uso de conectividade usando a rede da operadora.
Autores:Robison Cris Brito, Andrei Carniel e Ricardo Ogliari
A comunicação entre dispositivos móveis e servidores remotos é uma ótima alternativa ainda hoje para tratar das limitações presentes nestes "pequenos" aparelhos, tais como o teclado para entrada de dados limitado, as capacidades de armazenamento e processamento reduzido e até mesmo a pequena tela que existe na maioria dos aparelhos. Desta forma, inúmeras tecnologias para comunicação podem ser empregadas nos dispositivos móveis, algumas delas já conhecidas pelos programadores desktop e web, tais como HTTP, Socket TCP, Socket UDP e WebService, outras exclusivas do mundo móvel, como SMS e MMS.
Este artigo apresenta o desenvolvimento de uma aplicação para a plataforma Android que faz uso de conectividade usando a rede da operadora, embora existam alternativas para a comunicação usando tecnologias como WI-FI ou Bluetooth. Em muitas situações, os aplicativos comerciais precisam comunicar-se com servidores utilizando a rede da operadora. Desta forma, este artigo apresenta os principais protocolos utilizados, como tirar proveito deles, suas vantagens e desvantagens.
Este trabalho é útil aos desenvolvedores iniciantes na tecnologia Android que desejam começar no mundo da conectividade para aprender a utilizar na plataforma algumas tecnologias de comunicação tais como HTTP, Socket TCP, Socket UDP, SMS, MMS e WebService. Também é aconselhável sua leitura, principalmente a seção "Comparando as tecnologias de comunicação" onde é feita uma comparação entre as tecnologias de comparação.
Uma das principais funções dos aparelhos celulares e tablets hoje em dia é a conectividade com a grande rede mundial de computador – a Internet. Uma das formas desta conectividade acontecer é via rede da operadora, que pode acontecer em qualquer lugar em que esta esteja acessível.
Para quem deseja manter-se conectado, mas sem custos, uma alternativa são as conexões locais, seja via rede sem fio – wifi – ou através de conexões Bluetooth, desta forma, pode-se navegar na Internet sem passar pela rede da operadora, e consequentemente, sem custos.
A evolução dos dispositivos móveis é tão grande que hoje é possível acessar uma página na Internet a partir de um smartphone da mesma maneira que acessamos e visualizamos na tela do nosso computador. Também já é possível termos acesso a serviços de rede que até então só estavam disponíveis em computadores desktop, tais como acesso a servidores telnet, contas de ftp, terminais remotos, entre muitos outros serviços.
Junto com a evolução da rede de comunicação, acontece a evolução nas possibilidades de utilização dos protocolos de rede a partir de aplicativos móveis. Atualmente, por exemplo, é possível desenvolver aplicativos Android que façam uso de protocolos já conhecidos no desktop tais como o http, socket TCP, socket UDP ou WebService, além da possibilidade de utilização de serviços quase que exclusivos dos dispositivos móveis, tais como SMS e MMS.
A seguir, uma rápida apresentação de cada um destes protocolos, mostrando suas características e conceitos, para na sequência, apresentar o desenvolvimento de um aplicativo Android que faça uso de todos estes protocolos.
HTTP (Hyper Text Transfer Protocol) é o protocolo de rede mais utilizado atualmente, sendo este o protocolo utilizado pelos browsers na recuperação dos dados dos servidores web. Ele é responsável pelo acesso da maioria das páginas na Internet existentes hoje (tem como características um formato simples para acessar sites).
O endereço de uma página web é referenciado por uma URL (ex: http://www.google.com.br). O servidor que fornece este serviço, na maioria das vezes, utiliza a porta 80 para isso.
O HTTP também fornece uma alternativa para acesso a dados de forma criptografada, o HTTPS (Hyper Text Transfer Protocol Secure), que nada mais é que o protocolo HTTP com uma camada adicional que permite que os dados sejam transmitidos por meio de uma conexão criptografada, a qual pode ser verificada a autenticidade do servidor por meio de Certificados Digitais (a porta padrão é 443).
Outra característica do HTTP é que o mesmo é baseado no método pedido-resposta, ou seja, um cliente (um navegador de Internet qualquer, por exemplo) envia um pedido para um servidor de páginas na web. Este, por sua vez, responde com os dados da página (imagens, links, sons, textos, etc.), desfazendo a conexão logo na sequência. Esse protocolo utiliza o formato ASCII e também transfere dados de hipermídia.
Um pedido HTTP é composto por quatro partes básicas: o método, que é a ação que deverá ser realizada; a URI (Universal Resource Identifier), que será a informação a ser requisitada; a versão do protocolo atual; informações adicionais complementares às demais informações.
A resposta HTTP é formada por três elementos: linha de status que indica sucesso ou falha; descrição da informação, contida na resposta (Metainformação/MIME); e a própria informação que foi requisitada.
O HTTP também possui uma lista de códigos respostas que é enviado junto com a resposta da requisição. Principais códigos de Status são:
200 (Document Follows) à pedido bem sucedido, a informação requisitada será retornada;
401 (Unautorized) à as informações requisitadas são de acesso restrito, sendo necessário autenticar;
403 (Forbidden) à acesso proibido;
404 (Page Not Found ) à retorna esse erro quando uma página da web não foi encontrada;
500 (Server error) à erro no servidor da web.
O conhecimento destes códigos de retorno é importante para um correto tratamento no aplicativo desenvolvido.
Este protocolo costuma ser utilizado para transmissão de dados baseado em conexão. Nele, é realizada uma conexão entre o cliente e o servidor, e a partir daí é criado um canal de comunicação seguro para a troca de dados, criando assim um elo bidirecional entre os dois programas. O Socket TCP garante a entrega de dados, utilizando para isso uma comunicação através do protocolo TCP (Transmission Control Protocol).
O Socket TCP necessita de quatro parâmetros para a comunicação: endereço IP de origem, a porta de origem, endereço IP de destino e a porta de destino. Nesse método, ao ser iniciado, o servidor fica a espera de conexões. Após a conexão, é aberto um canal de comunicação bidirecional, onde o servidor envia os dados requisitados e o cliente envia um acknowledgment (esta "resposta" serve para identificar se os pacotes foram recebidos ou não, caso não receba, o servidor reenvia os pacotes perdidos). Cada socket, seja ele cliente ou servidor, diz quantos bytes pode receber, se o receptor estiver lento o emissor tem que esperar, assim, ambos (cliente e servidor) trabalham na mesma velocidade.
Outra característica é que o Socket TCP é a base de outros protocolos como, por exemplo, o HTTP. Desta forma, por ser mais simples, o Socket TCP costuma ser mais rápido.
Datagrama ou Socket UDP
Modelo de protocolo não orientado a conexão, o datagrama, também conhecido como Socket UDP, divide os dados em partes e os envia pela rede para um determinado endereço de destino. A entrega, ordem de chegada e a hora de chegada, não são garantidas nesse tipo de protocolo.
Os dados que serão enviados são divididos em partes, cada uma destas partes é chamada de pacote, podendo variar de tamanho dependendo do hardware que irá recebê-lo. Após os dados estarem divididos em pequenas partes, é colocado nele o número do IP de destino e a porta que irá receber os pacotes, além do endereço IP de origem.
Com os pacotes prontos, eles serão enviados pela rede. Cada pacote terá seu próprio caminho e seu tempo para transmissão do transmissor para o receptor.
Quando chegam ao destino será removido o cabeçalho e serão feitas as checagens dos pacotes para saber se está tudo certo. Se não ocorrer erro, o datagrama é reagrupado na ordem correta e remontada sua informação original.
Como o uso do datagrama não é baseado em conexão (ao contrário do que acontece no Socket TCP e no protocolo HTTP, por exemplo), a velocidade de comunicação entre o cliente e o servidor é maior, entretanto, não existe garantia de entrega dos dados neste protocolo.
O SMS (Short Message Service ou Serviço de Mensagem Curta) é um serviço de troca de mensagens curtas entre celulares e smartphones. Seu funcionamento é bem simples, as mensagens são trocadas entre os aparelhos em um esquema chamado "store-and-forward", ou seja, o aparelho envia a mensagem, esta será recebida por um controle da operadora de serviço que irá processar a mensagem e enviá-la ao destinatário, bem como a cobrança das mensagens que pode variar de operadora para operadora.
O SMS permite o envio de até 160 caracteres, porém este número pode variar um pouco dependendo da operadora. O usuário também tem a opção de enviar mensagens maiores, mas neste caso o conteúdo é transmitido em múltiplas mensagens.
Outra característica do SMS é o fato de outras entidades poderem enviar e receber as mensagens como, por exemplo, computador desktop e servidores web. Caso o usuário não esteja disponível para receber a mensagem, ela será armazenada em um banco de dados da SMSC (Short Message Service Center), e assim que o usuário estiver disponível ele automaticamente enviará a mensagem. Não existe garantia de entrega.
Multimidia Messaging Service é o acrônimo para um serviço chamado de MMS, sendo este um protocolo que aproveita o sucesso do SMS e possibilita aos usuários enviarem e receberem mensagens multimídia (clipe de vídeo com anotação de texto, mapas, gráficos, layouts, cartoons, animações, clipe de áudio, reprodução sincronizada de áudio, texto, vídeo e/ou foto, entre muitos outros), sendo que na maioria das operadoras as mensagens MMS podem ter até 30 KB, muito superior aos 160 caracteres disponíveis no SMS.
A MMS permite três tipos de comunicação: celular-a-celular, celular-e-mail e celular-outras aplicações, além de possuir quatro tipos básicos de serviços: mensagens multimídia originadas de celular, mensagens multimídia terminadas em celular, mensagens multimídia originadas em uma aplicação e mensagens multimídia terminadas em uma aplicação.
Inicialmente o aparelho codifica a mensagem com arquivo multimídia, semelhante ao envio de MIME (padrão da Internet que estende o e-mail). Após isso, a mensagem é encaminhada para a operadora MMSC (Multimidia Messaging Service Center) e esta se encarrega de enviar a mensagem ao destinatário.
Web Service é, provavelmente, uma das tecnologias mais interessante para a troca de informações na Internet. Ele permite que diferentes empresas, mesmo utilizando tecnologias e plataformas distintas, conectem-se de maneira padrão e executem procedimentos remotos através da utilização do protocolo padrão da internet – HTTP. Tudo isso com grande velocidade e facilidade.
O uso de Web Service é muito interessante, você pode acessar rotinas de validação de cartão de crédito, endereçamento postal (CEP), calcular valores de fretes dos sites de comércio eletrônico, news de empresas, entre outros serviços. Devido à popularização dessa abordagem, uma gama gigantesca de produtos já está pronto em algum lugar, você só precisa ir lá e acessar, de maneira rápida e fácil, aliviando o processamento na máquina cliente, já que toda a lógica de negócio fica no servidor que hospeda os serviços. Outra diferença em relação às abordagens de desenvolvimento "tradicionais", baseadas principalmente no uso de rotinas locais, é que os Web Services oferecem facilidades na disponibilização e na atualização de suas funcionalidades.