Como já vimos em posts anteriores, a JSR 75 especifica dois pacotes obrigatórios para a plataforma Java ME.
Um deles é o PIM - Pacote que permite desenvolvedores realizar CRUD (criar, recuperar, atualizar e excluir), acessando os dados de PIM do aparelho, tais como agenda, livro de endereços e listas de tarefas, que existe na maioria dos dispositivos móveis.
É importante saber que nem todos os dispositivos suportam a PIM API e que alguns podem ter mais de um banco de dados pessoal.
Os objetivos principais deste pacote opcional são:
-Proporcionar o acesso aos dados pessoais em formatos nativos, o que poderá residir no dispositivo, em mídia removível, ou em algum lugar sobre a rede;
-Suporte à importação e exportação de endereços do catálogo em formato vCard e agenda, e fazer cadastros em formato vCalendar;
-Não impõe campos ou atributos obrigatórios;
-Garantir a segurança na utilização destas APIs.
O pacote opcional PIM define três tipos de dados de PIM, conhecido como listas PIM:
-As listas de contatos, que contêm nomes, endereços, números de telefone e outras informações sobre negócios e contatos pessoais;
-Lista de eventos, compromissos, lembretes, data e outros itens específicos;
-Listas de tarefas, as tarefas que o usuário precisa realizar.
As APIs do PIM estão definidas no pacote javax.microedition.io.pim. Este pacote é composto por oito interfaces e seis classes, incluindo quatro tipos de exceção:
Descrição das Interfaces
-PIMItem: A superinterface comum de um item a ser armazenado em uma lista do PIM;
-PIMList: A superinterface comum de ContactList, EventList e ToDoList, cada um dos quais pode conter zero ou mais PIMItems;
-Contact: uma única entrada em um banco de contato, os campos estáticos nesta interface são um subconjunto dos campos definido pela especificação vCard;
-ContactList: Uma lista de itens de Contato;
-Event: Entrada única no banco de eventos;
-EventList: Uma lista de itens do evento;
-ToDo: Entrada única no banco de afazeres;
-ToDoList: Uma lista de itens para fazer.
Descrição das Classes
-PIM: Fornece um conjunto de métodos estáticos para encontrar informações e para acessar PIMLists;
-RepeatRule: A descrição de um padrão de repetição de um item do evento, para especificar quando o evento associado ocorrerá (os campos estáticos dessa classe são um subconjunto dos recursos do campo RRULE em VEVENT, definido pela especificação vCalendar 1.0);
-FieldEmptyException: acionada quando uma tentativa é feita para acessar um campo que não tem dados com valores a ele associados;
-FieldFullException: acionada quando uma tentativa é feita para adicionar dados a um campo cujos valor dos dados disponíveis já foram atribuídos;
-PIMException: geradas pelas classes PIM;
-UnsupportedException: Acionada quando o campo de referência não é suportado na lista PIM que um elemento pertence.
O pacote PIM poderá não estar disponíveil em todas as plataformas Java ME. Para saber se algum dispositivo implementa tal pacote opcional, chame o método System.getProperty(microedition.pim.version). O método irá retornar o número da versão da API se é suportado, ou nulo se não é.
Para exemplificar segue a implementação de duas classes:
PIMMidlet.java
ReadPIM.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class PIMMidlet extends MIDlet {
ReadPIM readPim;
Display display;
public void startApp(){
display = Display.getDisplay(this);
readPim = new ReadPIM(this);
display.setCurrent(readPim);
}
public void pauseApp(){
}
public void destroyApp(boolean uc){
}
}
Referências
import javax.microedition.lcdui.*;
import javax.microedition.pim.*;
import java.util.*;
public class ReadPIM extends Form implements Runnable, CommandListener{
PIM pim;
PIMList pimlist;
Contact contact=null;
Enumeration enumeration;
PIMMidlet midlet;
String contactName="";
String contactNo="";
Thread thread=null;
Command exitCmd = new Command("Sair",Command.EXIT,1);
public ReadPIM(PIMMidlet midlet){
super("Lendo Contatos");
this.midlet = midlet;
pim = PIM.getInstance();
thread = new Thread(this);
thread.start();
addCommand(exitCmd);
setCommandListener(this);
}
public void run(){
readContacts();
}
public void readContacts(){
String[] lists = pim.listPIMLists(PIM.CONTACT_LIST);
for (int i = 0; i < pimlist =" pim.openPIMList(PIM.CONTACT_LIST,PIM.READ_WRITE);" enumeration =" pimlist.items();" contact =" (Contact)enumeration.nextElement();">0))
contactName = contact.getString(Contact.FORMATTED_NAME,0);
if(pimlist.isSupportedField(Contact.TEL) &&(contact.countValues(Contact.TEL) >0))
contactNo = contact.getString(contact.TEL,0)+"\n\n";
append("\nNome: "+contactName+"\nTelefone: "+contactNo);
}
}catch( Exception e){}
}
}
public void commandAction(Command c , Displayable d){
if(c == exitCmd){
midlet.destroyApp(true);
midlet.notifyDestroyed();
}
}
}
http://developers.sun.com/mobility/apis/articles/pim/index.html
5 comentários:
Utilizando a PIM API a sua aplicação pode explorar mais os recursos do dispositivo móvel. Se o dispositivo dê suporte a PIM API vale a pena utilizá-la.
Essa dica para quem está iniciando é ótima dica.
Esse código da ReadPIM acredito que esteja faltando parte e/ou está com algum erro... não estou conseguindo rodá-lo
O código está correto Daniel, mas é preciso rodar no celular ;)
Olá, boa tarde.
Sou novo no mundo do Java ME, mas tenho muito interesse em aprender e desenvolver algo para celulares que possuem a tecnologia Java, em especial e como modelo de testes, o meu Hiphone F030 que executa perfeitamente qualquer aplicação em Java com touchscreen.
Instalei o NetBeans IDE 6.9.1 (já com o JDK atualizado) em meu PC e já consegui criar um projeto de iniciante como o 'Hello World', e instalar o .jar do mesmo neste celular citado acima. Show !
Porém, na tentativa de fazer o mesmo com este exemplo do post (PIMMidlet e ReadPIM), pensando em acessar meus contatos, ao tentar 'construir o projeto' no NetBeans, erros são apontados na saída (build) do processo, solicitando a inclusão de ';' e/ou ')' na linha 39 do ReadPIM.java. O que aborta o processo da geração do .jar (compilado), o qual apenas ele seria possível executar em meu celular. Pode me ajudar com mais alguma dica ? Nao consigo executar/instalar o .java no celular. Obrigado pela atenção. Att. Daniel Corrêa - Bauru(SP) - danielcorrea76@gmail.com (MSN).
Olá novamente Rodolfo,
Para complementar minhas dúvidas anteriores, implementei o exemplo abaixo e o mesmo retornou '1.0' como deveria:
String v = System.getProperty("microedition.io.file.FileConnection.version");
if( v != null ){
System.out.println(v);
} else {
//FCOP não encontrada
}
Postar um comentário