Artigo WebMobile 24 - Desenvolvendo uma Aplicação Java ME de tradução e envio de mensagem SMS

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

O artigo servirá para ensinar e orientar os desenvolvedores a programar sistemas em JavaME que utilizem diversos serviços web disponíveis na internet.

 

Esse artigo faz parte da revista WebMobile edição 24. Clique aqui para ler todos os artigos desta edição

 

imagem_pdf.jpg

 

 

Java Mobile

Desenvolvendo uma Aplicação JavaME de Tradução e envio de Mensagem SMS

Parte 1: Desenvolvendo o Editor e Tradutor de Mensagens utilizando Serviços HTTP

 

LEAD: BOX

De que se trata o artigo:

Esta é uma série que trata da utilização de serviços disponíveis na web (HTTP) em aplicações JavaME. Será explicado o passo a passo da montagem de um sistema tradutor e lançador de mensagens de texto (SMS) traduzidas. Neste primeiro artigo veremos a utilização de serviços via HTTP com o propósito de traduzir mensagens de texto a partir de um celular.

Para que serve:

O artigo servirá para ensinar e orientar os desenvolvedores a programar sistemas em JavaME que utilizem diversos serviços web disponíveis na internet. O sistema é simples, porém bastante útil. Utilizando um serviço de tradução disponível na internet, o sistema irá traduzir as mensagens de uma língua para outra (ex: português para italiano, etc).

Em que situação o tema é útil:

O tema é útil para analistas que desejam que suas aplicações JavaME desfrutem de serviços disponíveis na internet. O sistema é útil para comunicação via SMS com textos escritos em diferentes línguas.

 

Nos dias de hoje, a comunicação possui um forte papel nas execuções de tarefas, sejam elas a nível corporativo ou de entretenimento. A tecnologia atual permite que a comunicação fique num patamar extremamente elevado. Com a internet, o conceito de globalização se tornou bem mais visível a todos, possibilitando que a troca de informações entre instituições ocorra de forma ágil e eficiente. Além disso, a diversidade de dispositivos (muitos deles portáteis) que acessam a internet é extremamente grande.

Olhando o cenário atual, percebemos que para nós, brasileiros, uma grande dificuldade em nos comunicar com o restante do mundo ainda é o idioma. Nosso idioma, o português, é pouco falado ao redor do mundo. Além disso, temos ainda uma certa dificuldade em aprender outros idiomas mais falados, como o Inglês. No cenário globalizado, essa situação não pode ser mais tolerada. No dia a dia, estamos cercados por informações nas mais diferentes línguas, seja para entretenimento (ex: vários jogos estão disponíveis apenas no idioma Inglês ou outras línguas diferentes da nossa), pesquisa (ex: livros técnicos ou artigos são normalmente escritos em outras línguas) ou negócio (a língua universal ainda é o inglês, mas conhecer outras línguas nos traz uma vantagem no mercado).

  Sendo assim, neste artigo iremos abordar uma solução alternativa e prática para o problema de comunicação em diferentes idiomas: desenvolveremos um sistema que funcionará em um aparelho celular que é capaz de traduzir mensagens de texto, para que estas mensagens possam ser usadas posteriormente para o envio de mensagens SMS (Short Message Service) para outro aparelho celular. Para isso, vamos utilizar as seguintes tecnologias JavaME: Conexão Genérica (GCF) e a API de mensagens (Wireless Messaging API – WMA) para criação e manipulação de SMS. Essas tecnologias estão disponíveis na grande maioria dos celulares do mercado. Mais adiante detalharemos mais a respeito delas.

Um ponto importante é a reusabilidade: ao invés de desenvolvermos todo um algoritmo de tradução de línguas, podemos utilizar um serviço especializado em traduções já existente na internet: Ferramentas de Idiomas do Google.

  Esta série será dividida em duas partes. Neste primeiro artigo, será abordada a interface (comunicação) da aplicação proposta com o Google Tradutor para tradução de mensagens de texto. O objetivo é simplesmente traduzir um texto de um idioma para outro. No segundo, serão detalhados os conceitos relacionados a SMS, além da construção da funcionalidade responsável pelo da mensagem traduzida via SMS para outros dispositivos.

A Aplicação Proposta

A aplicação que iremos desenvolver trata-se de um sistema que permite que os usuários escrevam textos numa determinada língua (português, espanhol, inglês, etc) e em seguida optem por traduzir este texto para outra língua (português, espanhol, inglês, etc). Neste momento, o sistema irá acessar o sistema de tradução do Google (http://translate.google.com.br/translate_t#) que irá retornar o texto traduzido para o aplicativo, que o exibirá ainda em forma editável (isso é interessante, pois o usuário pode querer ajustar algumas palavras ou nomes que o Google tenha se equivocado). Por fim, o usuário pode optar por enviar o texto traduzido para outro dispositivo celular.

Conforme mencionado, tanto na tradução quanto no envio do SMS, será utilizada a API de Conexão Genérica do JavaME (GCF). Para o acesso ao serviço de tradução, utilizaremos a interface HttpConnection. Para o envio do SMS, utilizaremos a interface MessageConnection. A criação e manipulação dos SMS’s serão realizadas pela API de mensagem WMA (JSR-120). A Figura 1 demonstra o fluxo e uso das APIs no sistema.

 

Figura 1. Fluxo de uso das APIs no sistema

Seleção de Tecnologias

Antes da construção da aplicação proposta, precisamos verificar se é possível e viável a criação de um sistema deste tipo para aparelhos celulares. Além disso, deve ser analisada qual a melhor maneira de se implementar esta solução. São dois pontos a serem analisados: a tradução e o envio da mensagem.

Em relação ao primeiro ponto, a tradução, existe a possibilidade de o próprio sistema traduzir internamente o texto a ser enviado, mas isto pode ser inviável devido a limitações de armazenamento e processamento dos celulares. Este é outro grande motivo para reutilizar um serviço que já existe, ou seja, a Ferramenta de Idiomas do Google. Para isto, os dispositivos (celulares) devem possuir a API de conexão a HTTP (HttpConnection). Caso o dispositivo não possua esta conexão, o dispositivo não deve permitir a instalação da aplicação (uma mensagem deve ser exibida para o usuário informando do problema).

Para o segundo ponto, criação e envio de SMS, diversos modelos de celulares (talvez a maioria) possuem a API de criação/manipulação de SMS (WMA) e a API de conexão de mensagens (MessageConnection). Estas APIS’s são requeridas para o funcionamento do sistema. Caso o dispositivo (celular) não possua esta API, o sistema pode ser instalado somente para o uso do tradutor. Envios de mensagens não serão possíveis neste caso. No momento da instalação, dispositivo deve notificar o usuário sobre a ausência desta API, informando que a aplicação não funcionará corretamente, visto que somente parte da aplicação funcionará (tradução).

Vale ressaltar que a grande maioria dos celulares possui implementação das APIs necessárias para o funcionamento deste sistema. Isto torna a aplicação bem aplicável ao mercado atual.

Muitos leitores já devem estar se questionando “como fazer para não permitir a instalação do aplicativo caso o celular não tenha tais APIs”? Veremos mais adiante como configurar o aplicativo para certas validações antes da instalação.

  A partir de agora, iremos abordar toda a parte de tradução, ou seja, a comunicação da aplicação com o serviço HTTP do Google. Como dito anteriormente, a parte de envio de SMS será abordade na segunda parte do artigo.

Ferramentas de Tradução do Google

Trata-se de um conjunto de aplicativos mantido pelo Google que auxiliam usuários a traduzir textos e sites para diferentes línguas. Estes aplicativos ficam disponibilizados na Web no endereço http://www.google.com.br/language_tools?hl=pt-BR. As principais aplicações são o tradutor de Web Sites e o Tradutor de Textos.

O Google atua fortemente em melhorias desses serviços. Isto o torna um serviço de grande confiabilidade. Mesmo assim, como todo tradutor automático, é sempre necessário dar uma validada no texto traduzido, visto que o Google pode se equivocar em certas palavras ou trechos. Por esse motivo a aplicação não enviará diretamente o texto traduzido. Antes, o usuário ainda poderá editá-lo com objetivo de ajustar qualquer erro de tradução.

API de Conexão Genérica (GCF) e a HttpConnection

O leitor já deve ter percebido que o serviço de tradução que referimos (ferramentas de idiomas do Google) é um sistema voltado para usuários “humanos”, ou seja, existe toda uma interface “Homem – Máquina” implementada. A pagina é voltada para pessoas. Mas isso não impede de criarmos sistemas que utilizam esse serviço. Basta utilizarmos o protocolo HTTP.

  Alguns sites, a fim de evitar acesso por máquinas e por conseqüência a sobrecarga dos servidores, forçam que o usuário informe um conjunto de letras em uma imagem qual um computador não consegue ler. Isto restringe o acesso a tais sistemas por meio automático e somente pessoas conseguem acessá-los. No caso das ferramentas de idiomas do Google ainda não existe esta restrição. Caso passe a existir, o sistema teria que ser modificado para que o usuário informe o texto disponibilizado na imagem a cada chamada do serviço.

Os acessos de aplicações para serviços de http necessitam que essas aplicações conheçam o protocolo HTTP. Não é foco deste artigo explicar este protocolo a fundo. Mas é necessário que o leitor saiba algumas informações para um melhor entendimento. Este protocolo baseia-se em pedidos e respostas entre aplicações cliente/servidor. O exemplo mais comum é a interação entre um navegador web (cliente) e um servidor.

O pedido resume-se a três seções: método (não confundir com método de uma classe Java), cabeçalho e corpo.

Existem três métodos de pedido:

·         GET – o corpo do pedido se mescla na URL, ou seja, os valores das variáveis (que o servidor aguarda) são enviadas junto do endereço (URL). Normalmente pode haver limite de tamanho, o que pode ocasionar perda de dados do pedido.

·         POST – os dados são enviados para o servidor separadamente da URL. Este método não possui limite de tamanho. Além disso, é um meio mais seguro se comparável com o GET.

·         HEAD – solicita somente meta-informações de um recurso.

 

O cabeçalho é utilizado para mandar informações extras do pedido, como configuração do cliente, requisição, etc. Existem diversos cabeçalhos possíveis que podem ser configurados. A lista de cabeçalhos e suas especificações podem ser obtidas no endereço http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html . Alguns cabeçalhos são:

·         Accept – Pode ser usado para especificar certos tipos de mídias que podem ser utilizados pela Resposta (response), como por exemplo, imagens.

·         Authorization – utilizado para autenticação (BASIC e DIGEST)

·         Content-Type – Indica o tipo de mídia (texto, binário, etc) utilizado no corpo das mensagens.

 

Finalmente o corpo do pedido. Como já era de se esperar, o corpo consiste nas informações enviadas pelo pedido. Dependendo do método utilizado, as informações do corpo são enviadas pela URL (GET) ou por fluxo separado (POST).

A resposta também consiste em três partes: status, cabeçalho e corpo. Não é foco do artigo explicar a resposta, visto que basicamente o que interessa para a aplicação cliente é o status e o corpo.  O status indica a situação da resposta (HTTP_OK, BAD_REQUEST, ...). Com o status poderemos saber se ocorreu erro ou não na resposta antes de processar todo o corpo da mensagem. O corpo é a informação desejada (pagina web, imagem, etc).

O protocolo HTTP possui vastas informações a ser detalhada. Mais informações podem ser obtidas no endereço http://pt.wikipedia.org/wiki/HTTP.

  O acesso a Http e outras conexões pelo JavaME é realizada pela API de Conexão Genérica ou Generic Connection Framework (no inglês). Ela é conhecida como GCF. A GCF é um conjunto de classes (API) que permite aos desenvolvedores criar sistemas JavaME com diversos tipos de conexão. Em outras palavras, é ela que possui as classes (na verdade são uma interfaces) de conexão HTTP, HTTPS, Socket, ServerSocket, Comm, Datagram, etc.

Mas isto não significa que qualquer celular que possua a GCF possa utilizar qualquer conexão. Isto porque a especificação diz que algumas conexões são obrigatórias e outras são opcionais. Na prática, isto significa que um modelo de celular pode ter somente a conexão de Http, enquanto outros modelos podem ter diversas outras conexões (Http, Socket, ...).

As conexões obrigatórias são:

·         Http (HttpConnection)

·         Https (HttpsConnection)

 

Algumas conexões opcionais:

·         UDP (UDPDatagramConnection)

·         Socket (SocketConnection)

·         Comm (CommConnection)

 

A criação de uma conexão com a GCF é realmente simples: basta informar qual o protocolo desejado e obter a interface correta para uso. A sintaxe e alguns exemplos de criação (com os protocolos em negrito) estão descritos na Listagem 1.

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?