Spec-Zone.ru › Qt 5.9

Класс QBluetoothDeviceDiscoveryAgent

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

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

Типы публичного доступа

перечисление DiscoveryMethod { NoMethod, ClassicMethod, LowEnergyMethod }
флаги DiscoveryMethods
перечисление Error { NoError, PoweredOffError, InputOutputError, InvalidBluetoothAdapterError, ..., UnknownError }
перечисление InquiryType { GeneralUnlimitedInquiry, LimitedInquiry }

Свойства

  • inquiryType : QBluetoothDeviceDiscoveryAgent::InquiryType
  • 1 свойство унаследовано от QObject

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

QBluetoothDeviceDiscoveryAgent(QObject *parent = Q_NULLPTR)
QBluetoothDeviceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = Q_NULLPTR)
~QBluetoothDeviceDiscoveryAgent()
QList<QBluetoothDeviceInfo> discoveredDevices() const
Error error() const
QString errorString() const
QBluetoothDeviceDiscoveryAgent::InquiryType inquiryType() const
bool isActive() const
int lowEnergyDiscoveryTimeout() const
void setInquiryType(QBluetoothDeviceDiscoveryAgent::InquiryType type)
void setLowEnergyDiscoveryTimeout(int timeout)
  • 32 открытых функции унаследованы от QObject

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

void start()
void start(DiscoveryMethods methods)
void stop()
  • 1 открытый слот унаследован от QObject

Сигналы

void canceled()
void deviceDiscovered(const QBluetoothDeviceInfo &info)
void error(QBluetoothDeviceDiscoveryAgent::Error error)
void finished()
  • 2 сигнала унаследованы от QObject

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

DiscoveryMethods supportedDiscoveryMethods()
  • 11 статических открытых членов унаследованы от QObject

Дополнительные унаследованные члены

  • 9 защищённых функций унаследованы от QObject

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

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

Для обнаружения устройств 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.

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

перечисление 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::UnknownError 100 Произошла неизвестная ошибка.

enum QBluetoothDeviceDiscoveryAgent::InquiryType

Этот перечисление описывает тип запроса, используемого при обнаружении устройств Bluetooth.

Постоянная Значение Описание
QBluetoothDeviceDiscoveryAgent::GeneralUnlimitedInquiry 0 Общий неограниченный запрос. Обнаруживает все видимые устройства Bluetooth в локальной области.
QBluetoothDeviceDiscoveryAgent::LimitedInquiry 1 Ограниченный запрос обнаруживает устройства, которые находятся в режиме ограниченного запроса.

LimitedInquiry не поддерживается на всех платформах. Если он запрошен на платформе, которая его не поддерживает, используется GeneralUnlimitedInquiry. Установка LimitedInquiry полезна для многопользовательских Bluetooth-игр, которым требуется более быстрое взаимодействие между устройствами. Телефон сканирует устройства в режиме LimitedInquiry, а обнаружение служб выполняется на одном или двух устройствах для ускорения сканирования служб. После того, как игра подключилась к целевому устройству, устройство возвращается к GeneralUnlimitedInquiry.

Документация свойств

inquiryType : QBluetoothDeviceDiscoveryAgent::InquiryType

Тип сканирования запроса, который используется при обнаружении устройств.

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

По умолчанию это свойство установлено в GeneralUnlimitedInquiry.

Не все платформы поддерживают LimitedInquiry.

Функции доступа:

QBluetoothDeviceDiscoveryAgent::InquiryType inquiryType() const
void setInquiryType(QBluetoothDeviceDiscoveryAgent::InquiryType type)

См. также InquiryType.

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

QBluetoothDeviceDiscoveryAgent::QBluetoothDeviceDiscoveryAgent(QObject *parent = Q_NULLPTR)

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

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

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

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

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

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

QBluetoothDeviceDiscoveryAgent::~QBluetoothDeviceDiscoveryAgent()

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

[signal] void QBluetoothDeviceDiscoveryAgent::canceled()

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

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

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

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

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

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

QList<QBluetoothDeviceInfo> QBluetoothDeviceDiscoveryAgent::discoveredDevices() const

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

Error QBluetoothDeviceDiscoveryAgent::error() const

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

[signal] void QBluetoothDeviceDiscoveryAgent::error(QBluetoothDeviceDiscoveryAgent::Error error)

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

Примечание: Сигнал error перегружен в этом классе. Для подключения к этому сигналу с использованием синтаксиса указателя на функцию Qt предоставляет удобную функцию для получения указателя на функцию, как показано в этом примере:

connect(bluetoothDeviceDiscoveryAgent, QOverload<QBluetoothDeviceDiscoveryAgent::Error>::of(&QBluetoothDeviceDiscoveryAgent::error),
    [=](QBluetoothDeviceDiscoveryAgent::Error error){ /* ... */ });

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

QString QBluetoothDeviceDiscoveryAgent::errorString() const

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

[signal] void QBluetoothDeviceDiscoveryAgent::finished()

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

bool QBluetoothDeviceDiscoveryAgent::isActive() const

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

int QBluetoothDeviceDiscoveryAgent::lowEnergyDiscoveryTimeout() const

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

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

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

void QBluetoothDeviceDiscoveryAgent::setLowEnergyDiscoveryTimeout(int timeout)

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

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

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

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

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

[slot] void QBluetoothDeviceDiscoveryAgent::start()

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

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

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

[slot] void QBluetoothDeviceDiscoveryAgent::start(DiscoveryMethods methods)

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

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

[slot] void QBluetoothDeviceDiscoveryAgent::stop()

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

[static] 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-5.9/qbluetoothdevicediscoveryagent.html

Spec-Zone.ru

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