Estou tentado fazer uma conexão de uma aplicação java Desktop, para um celular. Estou usando a biblioteca Bluecove, porém sem sucesso ao tentar detectar os dispositivos moveis através do aplicação. É realmente possível fazer esse tipo de comunicação? Vi também que é possivel fazer isso usando a implementação JRS-82, andei dando uma pesquisada de como implementar e também não achei muita coisa a respeito. Alguém poderia me ajudar ou me dar um norte?
Sim é possível.
Eu fiz no meu TCC em 2016.
Na época a última versão do Bluecove era de 2008, ou seja, bastante defasada.
Não sei se vale a pena você tentar implementar a especificação do JSR-82, pois você vai precisar implementar muita coisa com JNI ou JNA.
Senhores segui o exemplo conforme o video:
import java.io.IOException;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
public class Main {
public static void main(String[] args) throws IOException {
LocalDevice localDevice = LocalDevice.getLocalDevice();
RemoteDevice[] remoteDevice = localDevice.getDiscoveryAgent().retrieveDevices(DiscoveryAgent.PREKNOWN);
for(RemoteDevice rm : remoteDevice) {
System.out.print("Devices: " + rm.getFriendlyName(false));
}
}
}
Porém o erro que eu recebo é:
BlueCove version 2.1.1-SNAPSHOT on winsock
Exception in thread "main" java.lang.NullPointerException
at br.com.bluecove.example.ui.Main.main(Main.java:19)
BlueCove stack shutdown completed
Debugando na parte de getDisvcoveryAgent
ele retorna null
Bem legal, estou usando o Bluecove também, porém estou tendo um erro ao buscar por devices, reclama de NullPointerException
BlueCove version 2.1.1-SNAPSHOT on winsock
Exception in thread "main" java.lang.NullPointerException
at br.com.bluecove.example.ui.Main.main(Main.java:19)
BlueCove stack shutdown completed
Meu código:
import java.io.IOException;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
public class Main {
public static void main(String[] args) throws IOException {
LocalDevice localDevice = LocalDevice.getLocalDevice();
RemoteDevice[] remoteDevice = localDevice.getDiscoveryAgent().retrieveDevices(DiscoveryAgent.PREKNOWN);
for(RemoteDevice rm : remoteDevice) {
System.out.print("Devices: " + rm.getFriendlyName(false));
}
}
}
O DiscoveryAgent.PREKNOWN
só vai trazer os dispositivos que já foram pareados anteriormente.
Opa, era isso mesmo estava procurando dispositivos que já tinham sido pareados, troquei para NOT_DISCOVERABLE
e funcionou perfeitamente. Vlw você me ajuda bastante.