Java-无法获取本地蓝牙设备

时间:2018-09-15 14:53:58

标签: java bluetooth raspberry-pi

我有一个连接到我的Raspberry PI的蓝牙加密狗,我希望它使用以下代码来检测蓝牙设备

LocalDevice local = LocalDevice.getLocalDevice();
DiscoveryAgent agent = local.getDiscoveryAgent();
inquiryStarted = agent.startInquiry(DiscoveryAgent.GIAC, new DiscoveryListener() {
    public void deviceDiscovered(RemoteDevice device, DeviceClass cod) {
        System.out.println("Discovered: " + device.getFriendlyName());
    }

    @Override
    public void inquiryCompleted(int arg0) {}

    @Override
    public void serviceSearchCompleted(int arg0, int arg1) {}

    @Override
    public void servicesDiscovered(int arg0, ServiceRecord[] arg1) {}
});

但是,我一开始就得到BluetoothStateException

LocalDevice local = LocalDevice.getLocalDevice();

我使用those instructions安装了加密狗,实际上,当我在PI上启动“首选项”>“蓝牙管理器”时,可以检测到iBeacon设备,因此加密狗正在工作。

对于蓝牙,我正在使用BlueCove。它的文档说,对于Linux,需要BlueZ蓝牙堆栈,实际上是在加密狗的配置过程中安装的。

有趣的是BlueCove文档提到了

  

如果自动蓝牙堆栈检测不足,则可以使用Java系统属性“ bluecove.stack”强制进行所需的堆栈初始化。值“ widcomm”,“ bluesoleil”或“ winsock”。默认情况下,选择winsock(如果可用)。

但是当我尝试获取bluecove.stack系统属性时

String bluecoveStack = System.getProperty("bluecove.stack")

我得到null作为回报。

在我的Java应用中可以使用LocalDevice之前,还需要做更多的事情吗?

0 个答案:

没有答案