Mercurio - RemoteDeviceDiscovery.java
Cerca
 











RemoteDeviceDiscovery.java

Caricato da: Moon Knight
Scarica il programma completo

  1. /**
  2.  * Classe per ricercare i dispositivi
  3.  */
  4. package mercurio;
  5.  
  6. import java.io.*;
  7. import java.util.*;
  8. import javax.bluetooth.*;
  9.  
  10. /**
  11.  * Minimal Device Discovery example.
  12.  */
  13. public class RemoteDeviceDiscovery
  14. {
  15.         private static final long serialVersionUID =                    1L;
  16.     private static final Vector<RemoteDevice> devicesDiscovered = new Vector<RemoteDevice>();
  17.     private static Vector<String> nomeDispositivi = new Vector<String>();
  18.     private static Vector<String> indirizzoDispositivi = new Vector<String>();
  19.  
  20.     public static int numberOfDevices()
  21.     {
  22.         return indirizzoDispositivi.size();
  23.     }
  24.    
  25.     public static String nomeDispositivo(int indice)
  26.     {
  27.         final String NESSUN_DISPOSITIVO =       "Nessun dispositivo";
  28.         if(nomeDispositivi.size() == 0)
  29.         {
  30.                 nomeDispositivi.add(NESSUN_DISPOSITIVO);
  31.                 return nomeDispositivi.elementAt(0).toString();
  32.         }
  33.         else
  34.         {
  35.                 return nomeDispositivi.elementAt(indice).toString();
  36.         }
  37.     }
  38.  
  39.     public static String indirizzoDispositivo(int indice)
  40.     {
  41.         final String NESSUN_INDIRIZZO =         "Nessun indirizzo";
  42.         if(indirizzoDispositivi.size() == 0)
  43.         {
  44.                 indirizzoDispositivi.add(NESSUN_INDIRIZZO);
  45.                 return indirizzoDispositivi.elementAt(0).toString();
  46.         }
  47.         else
  48.         {
  49.                 return indirizzoDispositivi.elementAt(indice).toString();
  50.         }
  51.  
  52.     }
  53.    
  54.     public static Vector<RemoteDevice> searchWithInformation() throws IOException, InterruptedException
  55.     {
  56.         final Object inquiryCompletedEvent = new Object();
  57.         devicesDiscovered.clear();        
  58.         DiscoveryListener listener = new DiscoveryListener()
  59.         {              
  60.             public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod)
  61.             {
  62.                 indirizzoDispositivi.add((btDevice.getBluetoothAddress()));
  63.                 System.out.println("Dispositivo " + indirizzoDispositivi.lastElement().toString() + " trovato");
  64.                 devicesDiscovered.addElement(btDevice);
  65.                 try
  66.                 {
  67.                         nomeDispositivi.add((btDevice.getFriendlyName(false)));
  68.                     System.out.println("\tNome " + nomeDispositivi.lastElement());
  69.                 } catch (IOException cantGetDeviceName)
  70.                         {
  71.                                 final String NOME_NON_DISPONIBILE =     "NESSUN NOME";
  72.                                 nomeDispositivi.add(NOME_NON_DISPONIBILE);
  73.                                 System.out.println("\tNome " + nomeDispositivi.lastElement());
  74.                                 System.out.println("\tImpossibile reperire il nome friendly del dispositivo");
  75.                         }
  76.             }
  77.  
  78.             public void inquiryCompleted(int discType)
  79.             {
  80.                 System.out.println("Interrogazione completata!");
  81.                 synchronized(inquiryCompletedEvent)
  82.                 {
  83.                     inquiryCompletedEvent.notifyAll();
  84.                 }
  85.             }
  86.  
  87.             public void serviceSearchCompleted(int transID, int respCode)
  88.             {
  89.                 //Da implementare, eventualmente
  90.             }
  91.  
  92.             public void servicesDiscovered(int transID, ServiceRecord[] servRecord)
  93.             {
  94.                 //Da implementare, eventualmente
  95.             }
  96.         };
  97.  
  98.         synchronized(inquiryCompletedEvent)
  99.         {
  100.             boolean started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);
  101.             if (started)
  102.             {
  103.                 System.out.println("Attendere, ricerca in corso...");
  104.                 inquiryCompletedEvent.wait();
  105.                 System.out.println(devicesDiscovered.size() +  " dispositivi trovati");
  106.             }
  107.         }
  108.         return devicesDiscovered;
  109.     }
  110.    
  111.     public static Vector<RemoteDevice> search() throws IOException, InterruptedException
  112.     {
  113.         final Object inquiryCompletedEvent = new Object();
  114.         devicesDiscovered.clear();        
  115.         DiscoveryListener listener = new DiscoveryListener()
  116.         {              
  117.             public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod)
  118.             {
  119.                 System.out.println("Dispositivo " + btDevice.getBluetoothAddress() + " trovato");
  120.                 devicesDiscovered.addElement(btDevice);
  121.                 try
  122.                 {
  123.                     System.out.println("\tNome " + btDevice.getFriendlyName(false));
  124.                 } catch (IOException cantGetDeviceName)
  125.                         {
  126.                                 System.out.println("\tImpossibile reperire il nome friendly del dispositivo");
  127.                         }
  128.             }
  129.  
  130.             public void inquiryCompleted(int discType)
  131.             {
  132.                 System.out.println("Interrogazione completata!");
  133.                 synchronized(inquiryCompletedEvent)
  134.                 {
  135.                     inquiryCompletedEvent.notifyAll();
  136.                 }
  137.             }
  138.  
  139.             public void serviceSearchCompleted(int transID, int respCode)
  140.             {
  141.                 //Da implementare, eventualmente
  142.             }
  143.  
  144.             public void servicesDiscovered(int transID, ServiceRecord[] servRecord)
  145.             {
  146.                 //Da implementare, eventualmente
  147.             }
  148.         };
  149.  
  150.         synchronized(inquiryCompletedEvent)
  151.         {
  152.             boolean started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);
  153.             if (started)
  154.             {
  155.                 System.out.println("Attendere, ricerca in corso...");
  156.                 inquiryCompletedEvent.wait();
  157.                 System.out.println(devicesDiscovered.size() +  " dispositivi trovati");
  158.             }
  159.         }
  160.         return devicesDiscovered;
  161.     }
  162.                
  163. }
 

Creative Commons License
Il layout di questo sito è concesso sotto licenza Creative Commons.
Per maggiori informazioni sulle licenze dei contenuti del sito, clicca.