Qt如何在Android上获取蓝牙配对设备的信息

时间:2020-06-18 09:35:09

标签: c++ qt bluetooth

我正在使用Qt 5.15.0开发适用于android的应用程序。在我的android设备上,当我进入 Settings-> Bluetooth 时,我可以看到已配对设备的列表。现在,我想获取有关这些设备的信息,例如 MacAddress name ,但是我找不到解决方法。 我尝试了 QBluetoothLocalDevice :: connectedDevices() QBluetoothLocalDevice :: allDevices() 。 我还尝试使用 QBluetoothDeviceDiscoveryAgent :: start() 开始扫描,但是当扫描完成时,我得到了 QBluetoothDeviceDiscoveryAgent :: discoveredDevices() 我只能得到未配对的新设备。

是否有必要这是我的代码:

#include <QDebug>

Dispositivi::Dispositivi(QObject *parent) : QObject(parent)
{
    qDebug() << "Inizializzazione Dispositivi";
    availableDevices.clear();

    discoveryAgent = new QBluetoothDeviceDiscoveryAgent();

    connect(discoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)), this, SLOT(addDevice(QBluetoothDeviceInfo)));
    connect(discoveryAgent, SIGNAL(finished()), this, SLOT(scanFinished()));

    localDevice = new QBluetoothLocalDevice();

    QList<QBluetoothAddress> bluetooth = localDevice->connectedDevices();
    for(QBluetoothAddress dev : bluetooth)
    {
        qDebug() << "Device Mac: " << dev.toString() /*<< " Name: " << dev.name()*/ << " Pairing Status: " << localDevice->pairingStatus(dev);
    }

}

Dispositivi::~Dispositivi()
{
    delete discoveryAgent;
    delete localDevice;
}

void Dispositivi::signalFromQml()
{
    qDebug() << "Arrivato il segnale";
}

void Dispositivi::startScan()
{
    devicesModel.clear();
    discoveryAgent->start();

}

AvailableDevicesModel *Dispositivi::availableDevicesFound()
{
    return &devicesModel;
}

void Dispositivi::addDevice(const QBluetoothDeviceInfo &info)
{

}

void Dispositivi::scanFinished()
{
    qDebug() << "Finito lo scan";
    for (int i = 0; i < availableDevices.size(); i++)
    {
        devicesModel.insertDevice(availableDevices.at(i));
    }

    QList<QBluetoothDeviceInfo> bt_found = discoveryAgent->discoveredDevices();
    for (QBluetoothDeviceInfo dev : bt_found)
    {
        qDebug() << "Device Mac: " << dev.address().toString() << " Name: " << dev.name() << " Pairing Status: " << localDevice->pairingStatus(dev.address());
    }

    emit scanHasFinished();
}

那么我该如何获取已经配对的设备?我想念什么?

谢谢!

0 个答案:

没有答案