javax.bluetooth.BluetoothStateException: BlueCove com.intel.bluetooth.BluetoothStackBlueZ не доступен - PullRequest
0 голосов
/ 05 июня 2018

Я имею дело с Java и BlueCove , чтобы найти устройства Bluetooth.

Я создал проект Maven и я добавил зависимость BlueCove:

<dependency>
    <groupId>net.sf.bluecove</groupId>
    <artifactId>bluecove</artifactId>
    <version>2.1.0</version>
</dependency>

Я работаю над Ubuntu , я установил следующие пакеты:

sudo apt-get install bluez libbluetooth-dev
sudo apt-get build-dep bluez-tools

I 'я скопировал и вставил пример отсюда , в основном следующее:

import java.util.Vector;

import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;

public class RemoteDeviceDiscovery {

    public Vector getDevices() {
    /* Create Vector variable */
    final Vector devicesDiscovered = new Vector();
    try {
        final Object inquiryCompletedEvent = new Object();
        /* Clear Vector variable */
        devicesDiscovered.clear();

        /* Create an object of DiscoveryListener */
        DiscoveryListener listener = new DiscoveryListener() {

            public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {
                /* Get devices paired with system or in range(Without Pair) */
                devicesDiscovered.addElement(btDevice);
            }

            public void inquiryCompleted(int discType) {
                /* Notify thread when inquiry completed */
                synchronized (inquiryCompletedEvent) {
                    inquiryCompletedEvent.notifyAll();
                }
            }

            /* To find service on bluetooth */
            public void serviceSearchCompleted(int transID, int respCode) {
            }

            /* To find service on bluetooth */
            public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
            }
        };

        synchronized (inquiryCompletedEvent) {
            /* Start device discovery */
            boolean started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);
            if (started) {
                System.out.println("wait for device inquiry to complete...");
                inquiryCompletedEvent.wait();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    /* Return list of devices */
    return devicesDiscovered;
    }
}

Но когда я запускаю свою программу, я получаю ошибку:

javax.bluetooth.BluetoothStateException: BlueCove com.intel.bluetooth.BluetoothStackBlueZ not available

при этомстрока:

boolean started = LocalDevice.getLocalDevice().getDiscoveryAgent().startInquiry(DiscoveryAgent.GIAC, listener);

Я уже видел другие ответы на похожий вопрос , но безуспешно.

Есть идеи?

...