/**
* Classe per ricercare i dispositivi
*/
package mercurio;
import java.io.*;
import java.util.*;
import javax.bluetooth.*;
/**
* Minimal Device Discovery example.
*/
public class RemoteDeviceDiscovery
{
private static final long serialVersionUID = 1L;
private static final Vector<RemoteDevice> devicesDiscovered = new Vector<RemoteDevice>();
private static Vector<String> nomeDispositivi = new Vector<String>();
private static Vector<String> indirizzoDispositivi = new Vector<String>();
public static int numberOfDevices()
{
return indirizzoDispositivi.size();
}
public static String nomeDispositivo
(int indice
)
{
final String NESSUN_DISPOSITIVO
= "Nessun dispositivo";
if(nomeDispositivi.size() == 0)
{
nomeDispositivi.add(NESSUN_DISPOSITIVO);
return nomeDispositivi.elementAt(0).toString();
}
else
{
return nomeDispositivi.elementAt(indice).toString();
}
}
public static String indirizzoDispositivo
(int indice
)
{
final String NESSUN_INDIRIZZO
= "Nessun indirizzo";
if(indirizzoDispositivi.size() == 0)
{
indirizzoDispositivi.add(NESSUN_INDIRIZZO);
return indirizzoDispositivi.elementAt(0).toString();
}
else
{
return indirizzoDispositivi.elementAt(indice).toString();
}
}
{
devicesDiscovered.clear();
DiscoveryListener listener = new DiscoveryListener()
{
public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod)
{
indirizzoDispositivi.add((btDevice.getBluetoothAddress()));
System.
out.
println("Dispositivo " + indirizzoDispositivi.
lastElement().
toString() + " trovato");
devicesDiscovered.addElement(btDevice);
try
{
nomeDispositivi.add((btDevice.getFriendlyName(false)));
System.
out.
println("\tNome " + nomeDispositivi.
lastElement());
{
final String NOME_NON_DISPONIBILE
= "NESSUN NOME";
nomeDispositivi.add(NOME_NON_DISPONIBILE);
System.
out.
println("\tNome " + nomeDispositivi.
lastElement());
System.
out.
println("\tImpossibile reperire il nome friendly del dispositivo");
}
}
public void inquiryCompleted(int discType)
{
System.
out.
println("Interrogazione completata!");
synchronized(inquiryCompletedEvent)
{
inquiryCompletedEvent.notifyAll();
}
}
public void serviceSearchCompleted(int transID, int respCode)
{
//Da implementare, eventualmente
}
public void servicesDiscovered(int transID, ServiceRecord[] servRecord)
{
//Da implementare, eventualmente
}
};
synchronized(inquiryCompletedEvent)
{
boolean started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);
if (started)
{
System.
out.
println("Attendere, ricerca in corso...");
inquiryCompletedEvent.wait();
System.
out.
println(devicesDiscovered.
size() + " dispositivi trovati");
}
}
return devicesDiscovered;
}
{
devicesDiscovered.clear();
DiscoveryListener listener = new DiscoveryListener()
{
public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod)
{
System.
out.
println("Dispositivo " + btDevice.
getBluetoothAddress() + " trovato");
devicesDiscovered.addElement(btDevice);
try
{
System.
out.
println("\tNome " + btDevice.
getFriendlyName(false));
{
System.
out.
println("\tImpossibile reperire il nome friendly del dispositivo");
}
}
public void inquiryCompleted(int discType)
{
System.
out.
println("Interrogazione completata!");
synchronized(inquiryCompletedEvent)
{
inquiryCompletedEvent.notifyAll();
}
}
public void serviceSearchCompleted(int transID, int respCode)
{
//Da implementare, eventualmente
}
public void servicesDiscovered(int transID, ServiceRecord[] servRecord)
{
//Da implementare, eventualmente
}
};
synchronized(inquiryCompletedEvent)
{
boolean started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);
if (started)
{
System.
out.
println("Attendere, ricerca in corso...");
inquiryCompletedEvent.wait();
System.
out.
println(devicesDiscovered.
size() + " dispositivi trovati");
}
}
return devicesDiscovered;
}
}