I did a Bluetooth server with bluecove following this tutorial:http://luugiathuy.com/2011/02/android-java-bluetooth/ I want to add a confirm popup with JOptionPane
before the connection but I don't know how. Can you help me? Here is the code:
import com.intel.bluetooth.BluetoothStack;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
import javax.microedition.io.StreamConnectionNotifier;
import javax.swing.JOptionPane;
public class WaitThread implements Runnable {
private GestorPrincipal gestor = GestorPrincipal.getInstancia();
/** * Constructor */
public WaitThread() { }
@Override
public void run() {
waitForConnection();
}
/** * Waiting for connection from devices */
private void waitForConnection() {
// retrieve the local Bluetooth device object
LocalDevice local = null;
StreamConnectionNotifier notifier; StreamConnection connection = null;
// setup the server to listen for connection
try {
local = LocalDevice.getLocalDevice();
local.setDiscoverable(DiscoveryAgent.GIAC);
UUID uuid = new UUID(80087355);
// "04c6093b-0000-1000-8000-00805f9b34fb"
String url = "btspp://localhost:" + uuid.toString() + ";name=RemoteBluetooth";
notifier = (StreamConnectionNotifier) Connector.open(url);
}
catch (Exception e) {
e.printStackTrace();
return;
}
// waiting for connection
while (true) {
try {
System.out.println("Esperando la conexion...");
gestor.agregarTexto("Esperando la conexion..");
connection = notifier.acceptAndOpen();
Thread processThread = new Thread(new ProcessConnectionThread(connection));
processThread.start();
}
catch (Exception e) {
e.printStackTrace(); return;
}
}
}
}`
PD: sorry for my English, I'm from ARG.
Oracle has well-documented this topic named "How to Make Dialogs" this document shows how to create different kind of dialog boxes which will prompt user some with expecting input from user and some to just display some data with icon.
http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html
For your requirement you could do something like this:
...
while (true) {
try {
System.out.println("Esperando la conexion...");
gestor.agregarTexto("Esperando la conexion..");
connection = notifier.acceptAndOpen();
//Ask user if he/she wants to get connected to this device
int userChoice = JOptionPane.showConfirmDialog(
null,
"Would you like to connect to DEVICE_NAME?",
"Connection Request",
JOptionPane.YES_NO_OPTION);
if(userChoice == JOptionPane.YES_OPTION) {
// Create thread and come out of loop
Thread processThread = new Thread(new ProcessConnectionThread(connection));
processThread.start();
break;
}
else {
// user rejected the connection so close the connection here to allow other devices to connect
}
}
catch (Exception e) {
e.printStackTrace(); return;
}
}
...