Я хочу найти по адресу Bluetooth на Bluecove - PullRequest
0 голосов
/ 08 октября 2018

Я хочу найти конкретное устройство на основе его адреса Bluetooth в BlueCove, но я не знаю, как это сделать, я создаю это, но оно недействительно

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub



    List<RemoteDevice> dispositivos = new ArrayList<RemoteDevice>();
    final Object inquiryCompletedEvent = new Object();



    LocalDevice ld = LocalDevice.getLocalDevice();

    DiscoveryAgent da = ld.getDiscoveryAgent();
    DiscoveryListener lstnr = new DiscoveryListener() {

        /*
         * Ejercicio2 clase utilizada para descubrir todos los dispositivos bluetooth(non-Javadoc)
         * //visibles cercanos
         */

        @Override
        public void deviceDiscovered(RemoteDevice arg0, DeviceClass arg1) {
            // TODO Auto-generated method stub
            dispositivos.add(arg0);
            //System.out.println("Dispositivo Bluetooth encontrado: "+arg0.getBluetoothAddress());

        }

        @Override
        public void inquiryCompleted(int arg0) {
            // TODO Auto-generated method stub
            //System.out.println("La busqueda de dispositivos se ha realizado correctamente\n");
            synchronized(inquiryCompletedEvent) {
                try { 
                    inquiryCompletedEvent.notifyAll();;
                } catch ( Exception e ) {}
            }
        }

        //Definir comportamiento a la hora de buscar un servicio en especifico

        @Override
        public void serviceSearchCompleted(int arg0, int arg1) {
        }

        @Override
        public void servicesDiscovered(int arg0, ServiceRecord[] arg1) {
        }

    };






    System.out.println("Ejemplo para probar la búsqueda de un dispositivo en concreto:\n");

    //Busco todos los dispositivos disponibles y guardo en una lista
    da.startInquiry(DiscoveryAgent.GIAC,lstnr);
    synchronized(inquiryCompletedEvent) {
        try { 
            inquiryCompletedEvent.wait();
        } catch ( Exception e ) {}
    }

    //Recorro esa lista y comparo atendiendo a si lo introducido era un string o la direccion bluetooth
    System.out.println("Como desea buscar la informacion, por direccion bluetooth introduzca 1, por friendly name 0:");
    Scanner sc = new Scanner(System.in);
    Scanner sc1 = new Scanner(System.in);
    int eleccion = 0;
    do {
        eleccion = sc1.nextInt();
    }while(eleccion!= 0 && eleccion != 1);


     if(eleccion == 1) {
         //Lo introducido es la direccion bluetooth
         System.out.println("Introduzca la dirección bluetooth:");
         String entrada = sc.nextLine();
         boolean prosigue = true;
         int i=0;
         boolean detectado = false;
         while(i<dispositivos.size() && prosigue == true) {
             if(dispositivos.get(i).getBluetoothAddress().equals(entrada)) {
                 System.out.println("El dispositivo seleccionado por dirección bluetooth se encuentra disponible actualmente");
                 prosigue = false;
                detectado = true;
             }
             i++;
         }

         if(detectado==false) {
             System.out.println("El dispositivo seleccionado por dirección bluetooth no se encuentra disponible actualmente");
         }

     }else {
         //Lo introducido es el friendly name
         System.out.println("Introduzca el friendly name:");
         String entrada = sc.nextLine();
         boolean prosigue = true;
         int i=0;
         boolean detectado = false;
         while(i<dispositivos.size() && prosigue == true) {
             if(dispositivos.get(i).getFriendlyName(false).equals(entrada)) {
                 System.out.println("El dispositivo seleccionado por friendly name se encuentra disponible actualmente");
                 prosigue = false;
                 detectado = true;
             }
             i++;
         }

         if(detectado==false) {
             System.out.println("El dispositivo seleccionado por friendly name no se encuentra disponible actualmente");
         }
     }

     sc.close();
     sc1.close();

}
...