wpjr2’s Weblog

Artigos e tutoriais úteis

Archive for the ‘JavaME’ Category

JavaME: Sistema de Vendas

Posted by wpjr2 em julho 4, 2008

Segue abaixo um post que pedi para um de meus ex-alunos (Lerço) do curso de programação em JavaME escrever sobre um projeto que ele está desenvolvendo e eu o ajudei um pouquinho.

Vou fazer um breve relato do projeto num todo para voce entender a explicacao do uso da rotina implementada !
Aqui na empresa, desenvolvemos um projeto J2ME, para aumentar e automatizar a forca de venda dos vendedores de nossos clientes distribuidores que atuam em todo o estado de MG.
Requisitos :
1) Evitar re-trabalho na digitacao dos pedidos ( faziam no bloco no cliente e lancavam pelo portal ) !
2) Ter uma lista com todos os seus clientes da regiao, e informacoes de ultima compra e inadimplencia;
3) Ter uma lista com todos os produtos e precos ( atualizados ! )
4) Obter a informacao rapida se o pedido foi aceito e a confirmacao de estoque dos produtos !
5) Deixar uma copia do pedido com o cliente;
Recursos :
1)Possuimos um ERP interno e um portal na internet para a digitacao dos pedidos pelos vendedores ( interligado com o ERP ).
2)Para este projeto, montamos um web-service em php responsavel por toda a comunicacao com o dispositivo. ( no caso um palm treo 680 ). Ele é quem alimenta todas as tabelas de ( cliente, condicao pagamento, forma pagamento, fornecedores, produtos e precos ) e insere os pedidos feitos no palm !

Case : Na tela de Pedidos, precisa listar num choice.pop_up todas as condicoes e forma de pagamento cadastrados.
Na inclusao do pedido, ira mostrar a lista toda focando na 1a. opcao . Na alteracao do pedido, preciso tambem mostrar toda a lista, mas focando na opcao selecionada anteriomente na inclusao !
Para este problema estava utilizando 2 HashTable’s ( 1 para apontar pelo index – idRegistro e outro para apontar idRegistro – index ). Mas nao estava achando a melhor alternativa. Ai tive a importante ajuda do Waldir com a dica : ” criar uma classe que extenda a classe ChoiceGroup e dentro desta vc ter um arranjo que dado o id da choice”. Entao fui maos a obra :
Seguem abaixo as classes :
Condicao.java – modelo
public class Condicao {
private int codigoCondicao;
private String descricaoCondicao;
private int idRegistro;
private int idPosicao;
— getters and setters
}
// classe sugerida pelo Waldir para resolver o problema das buscas index – codigo e codigo – index
CondicaoChoice.java – extends choicegroup
public class CondicaoPagtoChoice extends ChoiceGroup {
private int [] idEntidades;

public CondicaoPagtoChoice(String label, int choiceType) {
super(label, choiceType);
// criada uma classe que tem um metodo statico que retorna o nr. registros de um recordstore
idEntidades = new int[DadosDao.totalRegistros

(AppMIDlet.BD_CPG)];
}

public void insert(int elementNum, Condicao entidade) {
idEntidades[elementNum] = entidade.getCodigoCondicao();
insert(elementNum, entidade.getDescricaoCondicao(), null);

}

// retorna o id da entidade selecionada
public int getIdEntidadeSelecionada() {
return idEntidades[getSelectedIndex()];
}

// retorna a posicao no list – poderia ter criado um outro array de inteiros para fazer este retorno !
public int getPosicaoSelecionada(int cod) {
int y=0;
for (int i=0;i<idEntidades.length;i++){
if (cod==idEntidades[i]) {
y=i;
break;
}
}
return y;
}
}
// classe responsavel para ler o recordstore da condicao !
CondicaoDao – DAO
public class CondicaoDao extends DadosDao {
// retorna um obj CondicaoPagtoChoice populado e ja com as referencias de index – codigo e codigo – index prontos !
public static CondicaoPagtoChoice choiceCondicao(){
CondicaoPagtoChoice lista=null;
int id;
try {
RecordStore rs=DadosDao.abrirRecordStore(AppMIDlet.BD_CPG);
RecordEnumeration re=rs.enumerateRecords(null, new OrdemAlfabetica(), false);

if (re.numRecords()>0){
Condicao p;
int cont=0;
lista = new CondicaoPagtoChoice(“Cond.Pagto:”,Choice.POPUP);
while (re.hasNextElement()) {
id = re.nextRecordId();
byte[] dados = rs.getRecord(id);
ByteArrayInputStream bain = new ByteArrayInputStream(dados);
DataInputStream dis = new DataInputStream(bain);
p= new Condicao();
p.setCodigoCondicao(dis.readInt());
p.setDescricaoCondicao(dis.readUTF());
p.setIdRegistro(id);
lista.insert(cont, p);
cont++;
}
}
re.destroy();
rs.closeRecordStore();
} catch (Exception e){
System.out.println(e);
}
return lista;
}
}
Agora o mais facil : na tela de pedidos ..
TelaPedido.java – VISAO
public class TelaPedido extends Form implements CommandListener, ItemStateListener {
private Pedido p;
private CondicaoPagtoChoice condicao;
… demais campos e commands

// recebo como parametros o titulo e o objeto do pedido ( para saber se alteracao ou inclusao )
public TelaPedido(String title,Pedido p) {
super(title);
this.p = p;
init(1);
}

private void init(int tp) {
condicao = CondicaoDao.choiceCondicao();
if (p.getIdCondicao()>0 ) {
condicao.setSelectedIndex(condicao.getPosicaoSelecionada(p.getIdCondicao()), true);
}
… demais campos e comands

append(condicao);
}
}

Anúncios

Posted in JavaME | Etiquetado: | Leave a Comment »

JavaME vs. Adobe Flash Lite

Posted by wpjr2 em junho 17, 2008




FlashLite JavaME

Segue abaixo um link interessante comparando as tecnologias de desenvolvimento de aplicações móveis JavaME da Sun e o Flash Lite da Adobe.

Link

De acordo com o artigo, no final das contas, cada tecnologia possui suas vantagens e desvantagens. O mais importante é a diversidade e a busca em tentar trazer ambas tecnologias em um único dispositivo, conforme o projeto Capuchin da SonyEricsson.

Capuchin

Posted in JavaME | Etiquetado: , | Leave a Comment »

Detectando Bluetooth em Dispositivos JavaME

Posted by wpjr2 em junho 17, 2008

Bluetooth

Como é possivel detectarmos se a JSR 82 (Bluetooth API) está presente do dispositivo? Existem várias maneiras de verificar isto. Porém, a mais recomendada é a apresentada abaixo, já que esta verifica diretamente a existência de uma classe dentro da API do aparelho.

import javax.bluetooth.*;

String BluetoothVersion = null;
boolean isBluetoothHere = true;

try {
Class.forName( “javax.bluetooth.LocalDevice” ); // does the class exist?

BluetoothVersion = javax.bluetooth.LocalDevice.getProperty( “bluetooth.api.version” );

} catch( ClassNotFoundException cnf ) { // class does not exist -> no Bluetooth
isBluetoothHere = false;
}

Posted in JavaME | Etiquetado: , | Leave a Comment »

JavaME: Plataforma JP8 da Sony Ericsson

Posted by wpjr2 em junho 16, 2008

Um dos fabricantes que mais investe na plataforma JavaME para seus dispositivos, a Sony Ericsson amplia a quantidade de JSRs suportadas na sua plataforma JP-8, ampliando o suporte a JSR 248 (MSA).

Link

Posted in JavaME | Etiquetado: , | Leave a Comment »

Google Android Developer Challenge: Top 50

Posted by wpjr2 em junho 6, 2008

Depois de mais de 1700 inscritos no Android Developer Challenge, os top 50 foram anunciados no site oficial da plataforma.

Link top 50

Slideshow das Aplicações

Link apresentando as aplicações

Posted in JavaME | Etiquetado: | Leave a Comment »

Porque JavaME?

Posted by wpjr2 em junho 4, 2008

Segue abaixo dois links interessantes falando sobre o porquê usar a tecnologia JavaME para dispositivos móveis:

Link 1

Link 2


Posted in JavaME | Etiquetado: | Leave a Comment »

Artigos Blog DevMobile

Posted by wpjr2 em junho 2, 2008

Segue abaixo os últimos artigos do DevMobile.blog.br.

Python for BlackBerry escrito em J2ME
Como deixar uma imagem em tons de cinza em J2ME
Como alterar a semi-transparência de uma imagem em J2ME
Tutorial: Como criar e trabalhar com imagens em aplicações J2ME
Comunicação paralela com servidor em aplicações J2ME com HttpConnection usando componente reutilizável
Conexões HTTP e Socket com BIS BES WAP Wi-Fi e TCP APN em aplicações BlackBerry

Posted in JavaME | Etiquetado: , | Leave a Comment »

JavaME: Voos Mobile e FlightStats Mobile

Posted by wpjr2 em maio 30, 2008

Uma aplicação muito interessante para quem viaja muito pelos aeroportos brasileiros é a aplicação Voos Mobile. Ela permite que a listagem dos vôos de todos os aeroportos seja visualizada diretamente pelo celular.

Link Maiores informações

Para informações de aeroportos no mundo inteiro, o FlightStats Mobile toma conta do recado. Este aplicativo também é feito em JavaME.

Link

Posted in JavaME, Noticias | Etiquetado: , , | Leave a Comment »

Forum Nokia Tech Days 2008

Posted by wpjr2 em maio 21, 2008

Fórum Nokia Tech Days 2008

Data: 16-17 de Junho, 2008
Local: Hotel Gran Melia Mofarrej, São Paulo, Brasil

Organizada pelo Forum Nokia, a Nokia Tech Days é uma conferência de dois dias de treinamento intensivo para desenvolvedores, que oferece aos participantes uma introdução abrangente para desenvolvimento de aplicações e conteúdo para dispositivos móveis, em um lucrativo mercado estimado em cerca de um bilhão de usuários de aparelhos Nokia.*

Independentemente de ser um desenvolvedor da web, software livre (ou código aberto) ou um profissional-consumidor, você encontrará as informações técnicas que precisa para alavancar o poder das tecnologias e plataformas Nokia.

Venha aprender o que há de novo nas plataformas de desenvolvimento Nokia e como rapidamente aperfeiçoar suas habilidades no desenvolvimento de aplicações para telefonia móvel.

A conferência apresentará:

Hands-on workshops em desenvolvimento de modernas aplicações para telefonia móvel;
Especialistas nas tecnologias Web RunTime, S60, Java, Flash Lite e Python;
Sessões técnicas e comerciais para atender suas expectativas;
Oportunidades únicas de networking com a Nokia, outros desenvolvedores de aplicações para celulares, líderes de tecnologia e negócios para telefonia móvel.

Link do Evento

Posted in JavaME, Noticias | Etiquetado: , , | Leave a Comment »

JavaME: Desenvolvimento para Blackberry

Posted by wpjr2 em maio 21, 2008

O BlackBerry é um aparelho celular da Research in Motion, que possui funções de editor de textos, acesso à internet, e-mail e tecnologia IPv6. O aparelho utiliza o serviço de e-mail da Research In Motion (RIM). É o aparelho que deu origem à categoria dos smartphones.

O Blackberry veio para mudar a idéia de que acessar a Internet pelo celular é algo complicado e ineficiente. Com uma série de recursos sofisticados, o aparelho pode muito bem dar a sensação de que o usuário está com um microcomputador na palma da mão.

O novo celular tem um browser que permite fácil navegação, um botão que funciona como mouse e um teclado alfanumérico que permite a digitação de textos. o envio e recebimento de mensagem e e-mail nestes aparelhos chega a até 200 kbps. Tudo graças ao uso da tecnologia EDGE, desenvolvida para transmissão de dados em alta velocidade, hoje superada por tecnologias como UTMS e HSDPA, que permite disponibilizar estes serviços com a infra-estrutura GSM existente.

Veja alguns artigos sobre BlackBerry:

Conexões HTTP e Socket com BIS BES WAP Wi-Fi e TCP APN em aplicações BlackBerry
http://devmobile.blog.br/2008/03/29/conexoes-http-e-socket-com-bis-bes-wap-wi-fi-e-tcp-apn-em-aplicacoes-blackberry/

Configurar a plataforma de desenvolvimento BlackBerry JDE no NetBeans
http://devmobile.blog.br/2008/03/28/configurar-a-plataforma-de-desenvolvimento-blackberry-jde-no-netbeans/

Como criar uma aplicação nativa Olá Mundo em BlackBerry
http://devmobile.blog.br/2008/01/20/como-criar-uma-aplicacao-nativa-ola-mundo-em-blackberry/

Aplicações BlackBerry: RIMlet X MIDlet
http://devmobile.blog.br/2008/01/20/rimlet-x-midlet/

Blackberry Development Using NetBeans Mobility Pack 5.5
http://www.netbeans.org/kb/55/blackberry.html

Posted in JavaME | Etiquetado: , | Leave a Comment »