com.intel.bluetooth.BluetoothRFCommClientConnection cannot be cast to javax.microedition.io.StreamConnectionNotifier
Esta exception é disparada quando tento conectar, mas não sei porque, já que não tenho imports deste tipo…
Alguém pode verificar?
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Vector;
import javax.bluetooth.DataElement;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.microedition.io.StreamConnectionNotifier;
/**
* Minimal Device Discovery example.
*/
public class DeviceDiscovery {
public static final Vector/*<RemoteDevice>*/ dispositivos = new Vector();
public static final Vector/*<String>*/ servicos = new Vector();
public static void main(String[] args) {
final Object espera = new Object();
dispositivos.clear();
DiscoveryListener listener = new DiscoveryListener() {
public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {
System.out.println("Dispositivo " + btDevice.getBluetoothAddress() + " encontrado");
dispositivos.addElement(btDevice);
try {
System.out.println(" nome " + btDevice.getFriendlyName(false));
} catch (IOException cantGetDeviceName) {
}
}
public void inquiryCompleted(int discType) {
System.out.println("Busca terminada");
synchronized(espera){
espera.notifyAll();
}
}
public void serviceSearchCompleted(int transID, int respCode) {
System.out.println("Busca de serviços terminada");
synchronized(espera){
espera.notifyAll();
}
}
public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
for (int i = 0; i < servRecord.length; i++) {
String url = servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
if (url == null) {
continue;
}
servicos.add(url);
DataElement nome_do_servico = servRecord[i].getAttributeValue(0x0100);
if (nome_do_servico != null) {
System.out.println("Serviço " + nome_do_servico.getValue() + " encontrado " + url);
} else {
System.out.println("serviço encontrado " + url);
}
}
}
};
synchronized(espera) {
boolean started;
try {
started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);
if (started) {
System.out.println("Procurando dispositivos...");
espera.wait();
System.out.println(dispositivos.size() + " dispositovo(s) encontrado(s)");
}
} catch (Exception ex) {
//Logger.getLogger(DeviceDiscovery.class.getName()).log(Level.SEVERE, null, ex);
}
}
if(dispositivos.size()>0){
UUID[] searchUuidSet = new UUID[] {new UUID(0x1101)};
int[] attrIDs = new int[] {
0x0100 // Nome do serviço
};
for(int i=0; i < dispositivos.size(); i++ ) {
RemoteDevice btDevice = (RemoteDevice) dispositivos.elementAt(i);
synchronized(espera) {
try {
System.out.println("Procurando serviços em " + btDevice.getBluetoothAddress() + " " + btDevice.getFriendlyName(false));
LocalDevice.getLocalDevice().getDiscoveryAgent().searchServices(attrIDs, searchUuidSet, btDevice, listener);
espera.wait();
} catch (Exception ex) {
//Logger.getLogger(DeviceDiscovery.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}
try{
String url = ((String) servicos.elementAt(0))+";authenticate=false;encrypt=false;";
StreamConnectionNotifier servidor = (StreamConnectionNotifier) Connector.open(url);//O erro acontece aqui
StreamConnection con = servidor.acceptAndOpen();
DataOutputStream dout = new DataOutputStream(con.openOutputStream());
dout.writeBytes("Hello World!");
}catch(Exception e){
System.out.println("Erro... "+e.getMessage());
}
System.out.println("Pronto...");
}
}
Obrigado.