Java - не удается получить локальное устройство Bluetooth - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть Bluetooth-ключ, подключенный к моему Raspberry PI, и я хочу, чтобы он обнаруживал устройства Bluetooth, используя следующий код

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();

Я установил мой ключ, используя эти инструкции , и действительно, я могу обнаружить свое устройство iBeacon, когда я запускаю Настройки> Bluetooth Manager на моем PI, поэтому ключ работает.

Для Bluetooth я использую BlueCove.В документации говорится, что для Linux требуется Bluetooth-стек BlueZ, и он действительно был установлен во время настройки ключа.

Интересно, что в документации BlueCove упоминается

Если автоматическое определение стека Bluetooth установленоНедостаточно свойство Java System "bluecove.stack" может быть использовано для принудительной инициализации стека.Значения "widcomm", "bluesoleil" или "winsock".По умолчанию выбран winsock.

, но когда я пытаюсь получить системное свойство bluecove.stack, например,

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

, я получаю null взамен.

Есть ли что-то еще, что нужно сделать, прежде чем я смогу использовать LocalDevice в своем Java-приложении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...