import javax.bluetooth.BluetoothStateException; import javax.bluetooth.DataElement; 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 BTScanner implements DiscoveryListener { List devices = []; boolean isRunning; /* * Scan for devices */ void scan() throws BluetoothStateException { LocalDevice dev = LocalDevice.getLocalDevice(); println "Found local device " + dev.friendlyName dev.setDiscoverable(DiscoveryAgent.GIAC); DiscoveryAgent discovery = dev.getDiscoveryAgent(); isRunning = true; discovery.startInquiry(DiscoveryAgent.GIAC, this); while(isRunning) { sleep(1) } } /* * Get list of found devices * @return list */ List get() { return devices; } /** @see javax.bluetooth.DiscoveryListener#deviceDiscovered(javax.bluetooth.RemoteDevice, javax.bluetooth.DeviceClass) */ public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) { println "Found device " + btDevice.bluetoothAddress devices.add(btDevice); } /** @see javax.bluetooth.DiscoveryListener#servicesDiscovered(int, javax.bluetooth.ServiceRecord[]) */ public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {} /** @see javax.bluetooth.DiscoveryListener#serviceSearchCompleted(int, int) */ public void serviceSearchCompleted(int transID, int respCode) {} /** @see javax.bluetooth.DiscoveryListener#inquiryCompleted(int) */ public void inquiryCompleted(int discType) { println "Inquiry completed." isRunning = false; } }