Spec-Zone.ru › Qt

Класс QBluetoothDeviceDiscoveryAgent

Класс QBluetoothDeviceDiscoveryAgent обнаруживает устройства Bluetooth поблизости. Подробнее...

Заголовок: #include <QBluetoothDeviceDiscoveryAgent>
qmake: QT += bluetooth
С момента: Qt 5.2
Наследует: QObject
  • Список всех членов, включая наследуемые

Открытые типы

перечисление DiscoveryMethod { НетМетода, КлассическийМетод, МетодНизкойЭнергии }
флаги DiscoveryMethods
перечисление Error { НетОшибки, ВыключенПитание, ОшибкаВводаВывода, НеверныйAdapterBluetooth, НеподдерживаемаяПлатформа, …, НеизвестнаяОшибка }

Открытые функции

QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = nullptr)
QBluetoothDeviceDiscoveryAgent(QObject *parent = nullptr)
виртуальный ~QBluetoothDeviceDiscoveryAgent()
QList<QBluetoothDeviceInfo> discoveredDevices() const
QBluetoothDeviceDiscoveryAgent::Error error() const
QString errorString() const
bool isActive() const
int lowEnergyDiscoveryTimeout() const
void setLowEnergyDiscoveryTimeout(int timeout)

Открытые слоты

void start(QBluetoothDeviceDiscoveryAgent::DiscoveryMethods methods)
void start()
void stop()

Сигналы

void canceled()
void deviceDiscovered(const QBluetoothDeviceInfo &info)
void deviceUpdated(const QBluetoothDeviceInfo &info, QBluetoothDeviceInfo::Fields updatedFields)
void errorOccurred(QBluetoothDeviceDiscoveryAgent::Error error)
void finished()

Статические открытые члены

QBluetoothDeviceDiscoveryAgent::DiscoveryMethods supportedDiscoveryMethods()

Подробное описание

Для обнаружения устройств Bluetooth поблизости:

  • создайте экземпляр QBluetoothDeviceDiscoveryAgent,
  • подключитесь к сигналам deviceDiscovered() или finished(),
  • и вызовите start().
void MyClass::startDeviceDiscovery()
{

    // Create a discovery agent and connect to its signals
    QBluetoothDeviceDiscoveryAgent *discoveryAgent = new QBluetoothDeviceDiscoveryAgent(this);
    connect(discoveryAgent, SIGNAL(deviceDiscovered(QBluetoothDeviceInfo)),
            this, SLOT(deviceDiscovered(QBluetoothDeviceInfo)));

    // Start a discovery
    discoveryAgent->start();

    //...
}

// In your local slot, read information about the found devices
void MyClass::deviceDiscovered(const QBluetoothDeviceInfo &device)
{
    qDebug() << "Found new device:" << device.name() << '(' << device.address().toString() << ')';
}

Для асинхронного получения результатов подключитесь к сигналу deviceDiscovered(). Чтобы получить список всех обнаруженных устройств, вызовите discoveredDevices() после сигнала finished().

Этот класс может использоваться для обнаружения устройств Bluetooth Classic и Low Energy. Тип устройства можно определить через атрибут QBluetoothDeviceInfo::coreConfigurations(). В большинстве случаев список, возвращаемый discoveredDevices(), содержит оба типа устройств. Однако не каждая платформа может обнаруживать оба типа устройств. На платформах с этим ограничением (например, iOS поддерживает только обнаружение Low Energy), процесс обнаружения ограничит поиск типом, который поддерживается.

Примечание: Начиная с Android 6.0 для обнаружения устройств требуется ACCESS_COARSE_LOCATION.

Примечание: Backend Win32 в настоящее время не поддерживает показатель силы принимаемого сигнала (RSSI), а также данные, специфичные для производителя, или другие данные обновлений, рекламируемые устройствами Bluetooth LE после обнаружения.

Документация по типам членов

[since 5.8] перечисление QBluetoothDeviceDiscoveryAgent::DiscoveryMethodфлаги QBluetoothDeviceDiscoveryAgent::DiscoveryMethods

Это перечисление описывает тип метода обнаружения, используемого классом QBluetoothDeviceDiscoveryAgent.

Постоянная Значение Описание
QBluetoothDeviceDiscoveryAgent::NoMethod 0x0 Обнаружение невозможно. Ни один из доступных методов не поддерживается.
QBluetoothDeviceDiscoveryAgent::ClassicMethod 0x01 Процесс обнаружения ищет устройства Bluetooth Classic (BaseRate).
QBluetoothDeviceDiscoveryAgent::LowEnergyMethod 0x02 Процесс обнаружения ищет устройства Bluetooth Low Energy.

Это перечисление было введено или изменено в Qt 5.8.

Тип DiscoveryMethods является псевдонимом для QFlags<DiscoveryMethod>. Он хранит логическое ИЛИ сочетание значений DiscoveryMethod.

См. также supportedDiscoveryMethods().

перечисление QBluetoothDeviceDiscoveryAgent::Error

Указывает все возможные условия ошибки, обнаруженные во время обнаружения устройств Bluetooth.

Постоянная Значение Описание
QBluetoothDeviceDiscoveryAgent::NoError 0 Ошибка не произошла.
QBluetoothDeviceDiscoveryAgent::PoweredOffError 2 Адаптер Bluetooth выключен, включите его перед началом поиска.
QBluetoothDeviceDiscoveryAgent::InputOutputError 1 Запись или чтение с устройства завершилось ошибкой.
QBluetoothDeviceDiscoveryAgent::InvalidBluetoothAdapterError 3 Указанный локальный адрес адаптера не соответствует физическому адресу адаптера какого-либо локального Bluetooth-устройства.
QBluetoothDeviceDiscoveryAgent::UnsupportedPlatformError 4 Обнаружение устройств не возможно или не реализовано на текущей платформе. Ошибка устанавливается в ответ на вызов start(). Примером таких случаев являются версии iOS ниже 5.0, которые вообще не поддерживают поиск Bluetooth-устройств. Это значение было введено в Qt 5.5.
QBluetoothDeviceDiscoveryAgent::UnsupportedDiscoveryMethod 5 Один из запрошенных методов обнаружения не поддерживается текущей платформой. Это значение было введено в Qt 5.8.
QBluetoothDeviceDiscoveryAgent::LocationServiceTurnedOffError 6 Служба определения местоположения выключена. Использование Bluetooth-API невозможно, когда служба определения местоположения выключена. Это значение было введено в Qt 6.2.
QBluetoothDeviceDiscoveryAgent::UnknownError 100 Произошла неизвестная ошибка.

Документация по функциям-членам

QBluetoothDeviceDiscoveryAgent::QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = nullptr)

Создает новый агент обнаружения Bluetooth-устройств с parent.

Использует deviceAdapter для поиска устройств. Если deviceAdapter создан по умолчанию, созданный объект QBluetoothDeviceDiscoveryAgent будет использовать локальный адаптер Bluetooth по умолчанию.

Если указанный deviceAdapter не является локальным адаптером, error() будет установлен в InvalidBluetoothAdapterError. Поэтому рекомендуется немедленно проверить флаг ошибки после использования этого конструктора.

См. также error().

QBluetoothDeviceDiscoveryAgent::QBluetoothDeviceDiscoveryAgent(QObject *parent = nullptr)

Создает новый агент обнаружения Bluetooth-устройств с родителем parent.

[signal] void QBluetoothDeviceDiscoveryAgent::canceled()

Этот сигнал излучается, когда поиск устройств прерван вызовом stop().

[signal] void QBluetoothDeviceDiscoveryAgent::deviceDiscovered(const QBluetoothDeviceInfo &info)

Этот сигнал излучается, когда Bluetooth-устройство, описанное параметром info, обнаружено.

Сигнал излучается как только была собрана наиболее важная информация об устройстве. Однако, до тех пор, пока не излучится сигнал finished(), сбор информации продолжается даже для уже обнаруженных устройств. Это особенно верно для информации о силе сигнала (RSSI) и данных производителя. Если требуется непрерывная обновление данных производителя или RSSI, рекомендуется извлечь информацию об устройстве через discoveredDevices() после завершения поиска или прослушать сигнал deviceUpdated().

Если lowEnergyDiscoveryTimeout() больше 0, сигнал излучается только тогда, когда хотя бы один атрибут info изменяется. Это отражает желание получать обновления, по мере получения более точной информации. Исключением из этого поведения является случай, когда lowEnergyDiscoveryTimeout установлен в 0. Таймаут в 0 выражает желание отслеживать появление и исчезновение устройств Bluetooth Low Energy со временем. В этом случае сигнал deviceDiscovered() излучается даже если info не изменилась с момента последнего излучения сигнала.

См. также QBluetoothDeviceInfo::rssi() и lowEnergyDiscoveryTimeout().

[signal] void QBluetoothDeviceDiscoveryAgent::deviceUpdated(const QBluetoothDeviceInfo &info, QBluetoothDeviceInfo::Fields updatedFields)

Этот сигнал излучается, когда агент получает дополнительную информацию о Bluetooth-устройстве, описанном параметром info. Флаги updatedFields указывают, какая информация была обновлена.

Во время поиска некоторые данные могут динамически изменяться, например, сила сигнала RSSI и данные производителя manufacturerData. Этот сигнал информирует вас о том, что, если ваше приложение отображает эти данные, они могут быть обновлены, вместо того чтобы ждать завершения поиска.

См. также QBluetoothDeviceInfo::rssi() и lowEnergyDiscoveryTimeout().

[signal, since 6.2] void QBluetoothDeviceDiscoveryAgent::errorOccurred(QBluetoothDeviceDiscoveryAgent::Error error)

Этот сигнал излучается, когда во время поиска Bluetooth-устройств возникает ошибка error. Параметр error описывает произошедшую ошибку.

Функция была введена в Qt 6.2.

См. также error() и errorString().

[signal] void QBluetoothDeviceDiscoveryAgent::finished()

Этот сигнал излучается, когда поиск Bluetooth-устройств завершается. Сигнал не будет излучен, если поиск завершился ошибкой.

[slot, since 5.8] void QBluetoothDeviceDiscoveryAgent::start(QBluetoothDeviceDiscoveryAgent::DiscoveryMethods methods)

Запускает поиск Bluetooth-устройств, если он еще не запущен, и указанные methods поддерживаются. Методы methods ограничивают область поиска устройств. Например, если целевой сервис или устройство — это устройство Bluetooth Low Energy, эта функция может использоваться для ограничения поиска устройствами Bluetooth Low Energy, что значительно сокращает время поиска.

Примечание: methods определяет только тип поиска и не подразумевает фильтрацию результатов. Например, поиск может по-прежнему содержать классические Bluetooth-устройства, несмотря на то, что methods установлено только на LowEnergyMethod. Это может произойти из-за кэшированных результатов поиска, которые могут быть включены в результаты поиска.

Функция была введена в Qt 5.8.

[slot] void QBluetoothDeviceDiscoveryAgent::start()

Запускает поиск Bluetooth-устройств, если он еще не запущен.

Сигнал deviceDiscovered() излучается по мере обнаружения каждого устройства. Сигнал finished() излучается после завершения поиска устройств. Поиск использует максимальный набор поддерживаемых методов поиска на платформе.

См. также supportedDiscoveryMethods().

[slot] void QBluetoothDeviceDiscoveryAgent::stop()

Останавливает поиск Bluetooth-устройств. Сигнал cancel() излучается после отмены поиска устройства. start() может быть вызван до получения сигнала отмены. После вызова start() сигнал отмены от предыдущего поиска будет отброшен.

[virtual] QBluetoothDeviceDiscoveryAgent::~QBluetoothDeviceDiscoveryAgent()

Деструктор для ~QBluetoothDeviceDiscoveryAgent()

QList<QBluetoothDeviceInfo> QBluetoothDeviceDiscoveryAgent::discoveredDevices() const

Возвращает список всех обнаруженных Bluetooth-устройств.

QBluetoothDeviceDiscoveryAgent::Error QBluetoothDeviceDiscoveryAgent::error() const

Возвращает последнюю ошибку.

QString QBluetoothDeviceDiscoveryAgent::errorString() const

Возвращает удобочитаемое описание последней ошибки.

bool QBluetoothDeviceDiscoveryAgent::isActive() const

Возвращает true, если агент в настоящее время выполняет поиск Bluetooth-устройств, в противном случае возвращает false.

[since 5.8] int QBluetoothDeviceDiscoveryAgent::lowEnergyDiscoveryTimeout() const

Возвращает таймаут в миллисекундах, применяемый к поиску устройств Bluetooth Low Energy. Значение -1 означает, что платформа не поддерживает эту функцию, и таймаут поиска устройств изменить нельзя. Возвращаемое значение 0 означает бесконечный поиск, который необходимо остановить вручную с помощью stop().

Эта функция была добавлена в Qt 5.8.

См. также setLowEnergyDiscoveryTimeout().

[since 5.8] void QBluetoothDeviceDiscoveryAgent::setLowEnergyDiscoveryTimeout(int timeout)

Устанавливает максимальное время поиска устройств Bluetooth Low Energy в timeout миллисекунд. Если timeout равно 0 поиск продолжается до вызова stop().

Это отражает тот факт, что процесс поиска устройств Bluetooth Low Energy в основном неограничен. Платформа продолжает искать дополнительные устройства до тех пор, пока поиск не будет остановлен вручную. Таймаут гарантирует, что поиск будет прерван через timeout миллисекунд. Конечно, поиск можно прервать вручную, вызвав stop().

Новое значение таймаута вступает в силу только после перезапуска поиска устройств. Кроме того, таймаут не влияет на поиск устройств классического Bluetooth. В зависимости от платформы поиск классических устройств может добавить дополнительное время к общему процессу поиска сверх timeout.

Эта функция была добавлена в Qt 5.8.

См. также lowEnergyDiscoveryTimeout().

[static, since 5.8] QBluetoothDeviceDiscoveryAgent::DiscoveryMethods QBluetoothDeviceDiscoveryAgent::supportedDiscoveryMethods()

Эта функция возвращает методы поиска, поддерживаемые текущей платформой. Она может использоваться для ограничения области поиска устройств.

Эта функция была добавлена в Qt 5.8.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qbluetoothdevicediscoveryagent.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API