У меня есть 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-приложении?