javabluetoothbluecove

Show confirm dialog to accept the connection, bluecove server java


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.


Solution

  • 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; 
              } 
         }
    ...