Então pessoal, tentei de varias formas, detectar um dispositivo remoto, bluetooth, no windows mobile, mas, todas as tentativas foram sem sucesso.
Experimentei varios codigo que encontrei na net, inclusive o de exemplo do bluecove, mas, sempre a msm coisa, minha aplicação parece que morre, não retorna nada.
Testando no pc, que não tem blutooth - apenas o emulador da sun, funciona tranquilo.
Tentei configurar um outdata, ou coisa parecida - não sei o nome, de todos os dados do bluetooth, um dispositivo gps, para a com7, mas, tambem falha a abertura da msm, ou seja, não sei mais o que fazer.
Alguem pode me ajudar, uma luz?
Obrigado.
cara posta o código
Esse é um dos codigos que peguei na net. Ele funciona no emulador do wirelesskit da sun, mas, no celular nada =(
[code]public class RemoteDeviceDiscovery implements DiscoveryListener {
//object used for waiting
private static Object lock=new Object();
//vector containing the devices discovered
private static Vector vecDevices=new Vector();
public String saida;
/**
* Constructor already searches for remote devices
* @throws java.io.IOException
*/
public RemoteDeviceDiscovery() throws IOException{
saida+="Começou...";
//display local device address and name
LocalDevice localDevice = LocalDevice.getLocalDevice();
saida+=("\nAddress: "+localDevice.getBluetoothAddress());
saida+=("\nName: "+localDevice.getFriendlyName());
//find devices
DiscoveryAgent agent = localDevice.getDiscoveryAgent();
saida+=("\nStarting device inquiry...");
agent.startInquiry(DiscoveryAgent.GIAC, this); //??? bluetoothDeviceDiscovery
try {
synchronized(lock){
lock.wait();
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
saida+=("\nDevice Inquiry Completed. ");
//print all devices in vecDevices
int deviceCount=vecDevices.size();
if(deviceCount <= 0){
saida+=("\nNo Devices Found .");
}
else{
//print bluetooth device addresses and names in the format [ No. address (name) ]
saida+=("\nBluetooth Devices: ");
for (int i = 0; i <deviceCount; i++) {
RemoteDevice remoteDevice=(RemoteDevice)vecDevices.elementAt(i);
saida+=("\n"+(i+1)+". "+remoteDevice.getBluetoothAddress()+" ("+remoteDevice.getFriendlyName(true)+")");
}
}
}
//methods of DiscoveryListener
/**
* This call back method will be called for each discovered bluetooth devices.
*/
public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {
saida+=("\nDevice discovered: "+btDevice.getBluetoothAddress());
//add the device to the vector
if(!vecDevices.contains(btDevice)){
vecDevices.addElement(btDevice);
}
}
//no need to implement this method since services are not being discovered
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
}
//no need to implement this method since services are not being discovered
public void serviceSearchCompleted(int transID, int respCode) {
}
/**
* This callback method will be called when the device discovery is
* completed.
*/
public void inquiryCompleted(int discType) {
synchronized(lock){
lock.notify();
}
switch (discType) {
case DiscoveryListener.INQUIRY_COMPLETED :
saida+=("\nINQUIRY_COMPLETED");
break;
case DiscoveryListener.INQUIRY_TERMINATED :
saida+=("\nINQUIRY_TERMINATED");
break;
case DiscoveryListener.INQUIRY_ERROR :
saida+=("\nINQUIRY_ERROR");
break;
default :
saida+=("\nUnknown Response Code");
break;
}
}
public Vector getDeviceList()
{
return vecDevices;
}
}[/code]
Com a experiencia que tenho em desenvolvimento Java para Windows Mobile, posso te dizer que a forma que vc tá fazendo não vai funcionar e se funcionar vai ser para poucos aparelhos, isso porque o BlueCove não implementa todos os hardwares Bluetooth disponiveis nos smartphones com Windows Mobile, então apenas em alguns aparelhos vai funcionar, se vc olhar na pagina do BlueCove tem uma lista dos aparelhos suportados, e de suas placas bluetooh.
Então como resolver isso? Simples vc vai adicionar seu dispositivo Bluetooth pelo windows de forma normal, parea ele, coloca sua senha deixa td certo.
Em seguida vá nas opções do aparelho e deixa ele sempre autorizado, não tem como eu te dizer como se faz pois cada modelo é de uma forma, mas a maioria tah na parte de settings ou definições do windows mobile depois sistema.
Feito isso se o windows já não o fez vc deve apontar uma porta serial para este dispositivo, isso é feito de forma diferente para cada aparelho, então da uma mexida vc tem que adicionar uma porta serial virtual para este dispositivo por exemplo uma COM1:
Pronto seu ambiente tah configurado e pronto para ser usado, agora para vc usar seu dispositibo não precisa mais de BlueCove, ficar aprendendo como procurar dispositivos em Bluetooth, nada disso, agora vc se foca em porta serial, estuda e corre atras de como se comunicar com portas seriais no java e só, pois o seu dispositivo agora tem uma porta serial, COM1: por exemplo.
Dica:
No windows quando queremos conectar em uma porta colocamos o seguinte nome da porta COM1, COM2, COM3, etc…
No Windows mobile muda apenas um : então tem que ser assim COM1:, COM2:, COM3:
Já quebrei muita a cabeça para descrobrir esta frescura dos dois hehe.