2016-10-09 3 views
0

Я сделал сервер Bluetooth с bluecove после этого учебника: http://luugiathuy.com/2011/02/android-java-bluetooth/ Я хочу добавить всплывающее окно подтверждения с JOptionPane перед подключением, но я не знаю, как это сделать. Вы можете мне помочь? Вот код:Показать диалоговое окно подтверждения, чтобы принять соединение, bluecove server java

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: извините за мой английский, я из ARG.

ответ

0

Oracle хорошо документировал эту тему с именем «Как сделать диалоги» В этом документе показано, как создавать различные типы диалоговых окон, которые подскажут пользователю некоторые из ожидающих ввода от пользователя, а некоторые просто отображать некоторые данные со значком ,

http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html

Для вашего требования вы могли бы сделать что-то вроде этого:

... 
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; 
      } 
    } 
... 
+0

Спасибо, но это не моя проблема. Я знаю, как делать диалоги. Моя проблема в том, что 'notifier.acceptAndOpen();' находится в цикле while, и диалог отображается все время. – Martin

+0

Вы хотите отобразить диалоговое окно для пользователя, который говорит что? Когда появляется диалоговое окно? И если доступно несколько устройств Bluetooth, должен ли пользователь запрашивать каждое соединение? Если пользователь принимает одно соединение, если оно выходит из цикла? –

+0

Я хочу отобразить диалоговое окно с надписью «Устройство xxxx пытается связаться с вами, вы хотите ?, да, нет». Он должен появиться, когда телефон попытается подключиться к ПК из моего приложения, только если никто не подключен. Мой код работает, но когда телефон хочет подключиться, сервер принимает его в одиночку. – Martin

Смежные вопросы