bluetooth-scanner is a bluetooth scanner java library using bluez-dbus with BlueZ version 5.50 on linux OS. I releases this in the form of the Eclipse plug-in project. You need Java 8 or higher.
It uses the dbus PropertiesChanged mechanism to catch the advertising signal and provide the BluetoothDevice object and RSSI / TxPower data to the handler.
The purpose of this library is to use an advertising signal to trigger the connection to a bluetooth device.
I have confirmed that it works in Raspberry Pi 3B (Raspbian Buster Lite OS (2019-07-10)).
The reason for using this version is that it is the latest as of July 2019 and BlueZ 5.50 is included from the beginning.
For example, the installation of OpenJDK 8 is shown below.
# apt-get update
# apt-get install openjdk-8-jdk
If git is not included, please install it.
# apt-get install git
I would like to thank the authors of these very useful codes, and all the contributors.
The following sample code implementing the IScanHandler
interface will be helpful.
import com.github.hypfvieh.bluetooth.DiscoveryFilter;
import com.github.hypfvieh.bluetooth.DiscoveryTransport;
import com.github.hypfvieh.bluetooth.wrapper.BluetoothDevice;
import io.github.s5uishida.iot.bluetooth.scanner.IScanHandler;
import io.github.s5uishida.iot.bluetooth.scanner.ScanData;
import io.github.s5uishida.iot.bluetooth.scanner.ScanProcess;
public class MyScan {
public static void main(String[] args) throws IOException, InterruptedException {
Map<DiscoveryFilter, Object> filter = new HashMap<DiscoveryFilter, Object>();
filter.put(DiscoveryFilter.Transport, DiscoveryTransport.LE);
ScanProcess scanProcess = new ScanProcess("hci0", new MyScanHandler(), filter);
scanProcess.start();
}
}
class MyScanHandler implements IScanHandler {
private static final Logger LOG = LoggerFactory.getLogger(MyScanHandler.class);
@Override
public void handle(BluetoothDevice device, ScanData data) {
LOG.info(device.toString());
LOG.info(data.toString());
}
}