package org.oobd.mobile; import java.io.IOException; import java.util.Vector; import javax.bluetooth.DeviceClass; import javax.bluetooth.DiscoveryAgent; import javax.bluetooth.DiscoveryListener; import javax.bluetooth.LocalDevice; import javax.bluetooth.RemoteDevice; import javax.bluetooth.ServiceRecord; /** * Class that discovers all bluetooth devices in the neighbourhood * and displays their name and bluetooth address. */ public class BluetoothDeviceDiscovery implements DiscoveryListener{ //object used for waiting public static LocalDevice localDevice; public static Object lock=new Object(); //vector containing the devices discovered public static Vector vecDevices=new Vector(); //main method of the application public static void main() throws IOException { //create an instance of this class BluetoothDeviceDiscovery bluetoothDeviceDiscovery=new BluetoothDeviceDiscovery(); //display local device address and name localDevice = LocalDevice.getLocalDevice(); //System.out.println("Address: "+localDevice.getBluetoothAddress()); // System.out.println("Name: "+localDevice.getFriendlyName()); //find devices DiscoveryAgent agent = localDevice.getDiscoveryAgent(); // System.out.println("Starting device inquiry..."); agent.startInquiry(DiscoveryAgent.GIAC, bluetoothDeviceDiscovery); try { synchronized(lock){ lock.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } }//end main //methods of DiscoveryListener /** * This call back method will be called for each discovered bluetooth devices. */ public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) { //System.out.println("Device discovered: "+btDevice.getBluetoothAddress()); //add the device to the vector if(!vecDevices.contains(btDevice)){ vecDevices.addElement(btDevice); // sterm.joro.append(btDevice.getBluetoothAddress(), null); } } //no need to implement this method since services are not being discovered public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { } //no need to implement this method since services are not being discovered public void serviceSearchCompleted(int transID, int respCode) { } /** * This callback method will be called when the device discovery is * completed. */ public void inquiryCompleted(int discType) { synchronized(lock){ lock.notify(); } //switch (discType) { // case DiscoveryListener.INQUIRY_COMPLETED : // System.out.println("INQUIRY_COMPLETED"); // break; // case DiscoveryListener.INQUIRY_TERMINATED : // System.out.println("INQUIRY_TERMINATED"); // break; // case DiscoveryListener.INQUIRY_ERROR : // System.out.println("INQUIRY_ERROR"); // break; // default : // System.out.println("Unknown Response Code"); // break; //} }//end method }//end class