domingo, 23 de novembro de 2008

Detectando as portas de comunicação do celular.

Em alguns aparelhos e para alguns recursos a única maneira de acessar portas de comunicação é com o uso do Generic Connection Framework (GCF) utilizando o nível mais baixo disponível para conexões na API do J2ME. Obtive muita experiência com o estas portas de comunicação ou CommPorts quando fazia testes com o IR (Infra-Red) de meu Palm Zire 72, antigamente poucos aparelhos suportavam a JSR 082 que é mais conhecida por auxiliar a utilização de comunicações via Bluetooth, mas também serve para a porta de IR. Além disso, muitos aparelhos novos com a JSR 82 não auxiliam a utilização do IR. Para isso pesquisei várias soluções para a utilização do IR, e uma delas seria tratar a sua porta como uma porta comum de USB.

Para descobrir as portas disponíveis de seu dispositivo para utilização com J2ME, existe uma propriedade que deve ser implementada em todo dispositivo que suporte J2ME, que é a: "microedition.commports". Esta propriedade retorna as portas separadas por uma vírgula (,) e que precisam apenas ser separadas para a sua utilização. Um exemplo do valor retornado por essa propriedade seria "usb0,ir0,bt0,bt1".

Um código que costumo utilizar para retornar as portas em um Vector seria o seguinte:


public static Vector getPorts() {
String ports = System.getProperty("microedition.commports");
Vector vector = new Vector();

if (ports.length() <= 0) return vector;
int index = ports.indexOf(",");
while (index > -1) {
String port = ports.substring(0, index);
vector.addElement(port);
ports = ports.substring(index+1);
index = ports.indexOf(",");
}
vector.addElement(ports);

return vector;
}


Talvez você encontre um algorítmo melhor para isto, pois a classe String no CLDC não possuí método próprio para separar a string por um pattern. Mas aí está, e funciona.

Nenhum comentário:

Talk to me: