Spec-Zone.ru › Qt

Класс QBluetoothServiceDiscoveryAgent

Класс QBluetoothServiceDiscoveryAgent позволяет запрашивать информацию о Bluetooth-сервисах. Подробнее...

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

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

перечисление DiscoveryMode { MinimalDiscovery, FullDiscovery }
перечисление Error { NoError, PoweredOffError, InputOutputError, InvalidBluetoothAdapterError, UnknownError }

Функции публичного доступа

QBluetoothServiceDiscoveryAgent(const QBluetoothAddress &deviceAdapter, QObject *parent = nullptr)
QBluetoothServiceDiscoveryAgent(QObject *parent = nullptr)
виртуальный ~QBluetoothServiceDiscoveryAgent()
QList<QBluetoothServiceInfo> discoveredServices() const
QBluetoothServiceDiscoveryAgent::Error error() const
QString errorString() const
bool isActive() const
QBluetoothAddress remoteAddress() const
bool setRemoteAddress(const QBluetoothAddress &address)
void setUuidFilter(const QList<QBluetoothUuid> &uuids)
void setUuidFilter(const QBluetoothUuid &uuid)
QList<QBluetoothUuid> uuidFilter() const

Свойства публичного доступа

void clear()
void start(QBluetoothServiceDiscoveryAgent::DiscoveryMode mode = MinimalDiscovery)
void stop()

Сигналы

void canceled()
void errorOccurred(QBluetoothServiceDiscoveryAgent::Error error)
void finished()
void serviceDiscovered(const QBluetoothServiceInfo &info)

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

Процесс обнаружения опирается на процесс обнаружения Bluetooth-сервисов (SDP). Для запроса услуг, предоставляемых всеми доступными Bluetooth-устройствами, необходимо выполнить следующие шаги:

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

    // Create a discovery agent and connect to its signals
    QBluetoothServiceDiscoveryAgent *discoveryAgent = new QBluetoothServiceDiscoveryAgent(this);
    connect(discoveryAgent, SIGNAL(serviceDiscovered(QBluetoothServiceInfo)),
            this, SLOT(serviceDiscovered(QBluetoothServiceInfo)));

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

    //...
}

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

По умолчанию выполняется минимальное обнаружение сервисов. В этом режиме возвращаемые объекты QBluetoothServiceInfo гарантированно содержат только информацию о UUID устройства и сервиса. В зависимости от платформы и возможностей устройства, может быть доступна и дополнительная информация о сервисе. Минимальное обнаружение сервисов использует кэшированные данные SDP платформы. Поэтому возможно, что это обнаружение не найдет устройство, хотя оно физически доступно. В таких случаях для принудительного обновления кэша платформы необходимо выполнить полное обнаружение. Однако для большинства случаев минимальное обнаружение является достаточным, так как оно гораздо быстрее, и другие классы, которые требуют актуальной информации, такие как QBluetoothSocket::connectToService(), выполнят дополнительное обнаружение при необходимости. Если требуется полная информация о сервисе, передайте FullDiscovery в качестве параметра discoveryMode для start().

Этот класс может использовать QBluetoothDeviceDiscoveryAgent для поиска неизвестных устройств.

Обнаружение сервисов может найти и Bluetooth Low Energy-сервисы, если целевое устройство представляет собой комбинацию классического и Low Energy-устройства. Такие устройства должны рекламировать свои Low Energy-сервисы через SDP. Если целевое устройство поддерживает только Bluetooth Low Energy-сервисы, они, скорее всего, не будут рекламироваться через SDP. Для выполнения обнаружения сервисов на Low Energy-устройствах следует использовать класс QLowEnergyController.

В iOS этот класс нельзя использовать, так как платформа не предоставляет API, который может позволить доступ к функциям, связанным с QBluetoothServiceDiscoveryAgent.

См. также QBluetoothDeviceDiscoveryAgent и QLowEnergyController.

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

перечисление QBluetoothServiceDiscoveryAgent::DiscoveryMode

Это перечисление описывает режим обнаружения сервисов.

Постоянная Значение Описание
QBluetoothServiceDiscoveryAgent::MinimalDiscovery 0 Выполняет минимальное обнаружение сервисов. Возвращаемые объекты QBluetoothServiceInfo могут быть неполными и гарантируют только наличие информации о UUID устройства и сервиса. Поскольку минимальное обнаружение полагается на кэшированные данные SDP, оно может не найти физически существующее устройство до тех пор, пока не будет выполнено FullDiscovery.
QBluetoothServiceDiscoveryAgent::FullDiscovery 1 Выполняет полное обнаружение сервисов.

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

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

Постоянная Значение Описание
QBluetoothServiceDiscoveryAgent::NoError QBluetoothDeviceDiscoveryAgent::NoError Ошибка не произошла.
QBluetoothServiceDiscoveryAgent::PoweredOffError QBluetoothDeviceDiscoveryAgent::PoweredOffError Bluetooth-адаптер выключен, включите его перед выполнением обнаружения.
QBluetoothServiceDiscoveryAgent::InputOutputError QBluetoothDeviceDiscoveryAgent::InputOutputError Ошибка при чтении или записи с устройства.
QBluetoothServiceDiscoveryAgent::InvalidBluetoothAdapterError QBluetoothDeviceDiscoveryAgent::InvalidBluetoothAdapterError Переданный адрес локального адаптера не соответствует физическому адресу адаптера любого локального Bluetooth-устройства. Это значение было введено в Qt 5.3.
QBluetoothServiceDiscoveryAgent::UnknownError QBluetoothDeviceDiscoveryAgent::UnknownError Произошла неизвестная ошибка.

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

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

Создает новый QBluetoothServiceDiscoveryAgent для deviceAdapter и с parent.

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

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

Примечание: В WinRT адрес переданного адаптера будет проигнорирован.

Примечание: В Android передача адреса deviceAdapter бессмысленна, так как Android 6.0 или более поздних версий больше не публикует локальный адрес Bluetooth. Вследствие этого, переданный адрес адаптера никогда не может быть сопоставлен с локальным адресом адаптера. Поэтому последующий вызов start() всегда будет вызывать InvalidBluetoothAdapterError.

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

QBluetoothServiceDiscoveryAgent::QBluetoothServiceDiscoveryAgent(QObject *parent = nullptr)

Создаёт новый QBluetoothServiceDiscoveryAgent с parent. Поиск выполняется через локальный адаптер Bluetooth по умолчанию.

[signal] void QBluetoothServiceDiscoveryAgent::canceled()

Этот сигнал срабатывает, когда поиск служб был отменён с помощью вызова stop().

[slot] void QBluetoothServiceDiscoveryAgent::clear()

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

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

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

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

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

[signal] void QBluetoothServiceDiscoveryAgent::finished()

Этот сигнал генерируется при завершении поиска служб Bluetooth.

В отличие от сигнала QBluetoothDeviceDiscoveryAgent::finished(), этот сигнал будет генерироваться даже при возникновении ошибки во время поиска служб. Поэтому рекомендуется проверять сигнал error() для оценки успешности поиска служб.

[signal] void QBluetoothServiceDiscoveryAgent::serviceDiscovered(const QBluetoothServiceInfo &info)

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

Примечание: Переданный параметр QBluetoothServiceInfo может содержать службу Bluetooth Low Energy, если целевое устройство рекламирует службу через SDP. Это требуется для устройств, поддерживающих как классический Bluetooth (BaseRate), так и службы Low Energy.

См. также QBluetoothDeviceInfo::coreConfigurations().

[slot] void QBluetoothServiceDiscoveryAgent::start(QBluetoothServiceDiscoveryAgent::DiscoveryMode mode = MinimalDiscovery)

Начинает поиск служб. mode задаёт тип поиска служб.

На некоторых платформах поиск устройств может привести к запросу на сопряжение.

См. также DiscoveryMode.

[slot] void QBluetoothServiceDiscoveryAgent::stop()

Останавливает процесс поиска служб. Сигнал canceled() будет сгенерирован, когда поиск завершится.

[virtual] QBluetoothServiceDiscoveryAgent::~QBluetoothServiceDiscoveryAgent()

Деструктор для QBluetoothServiceDiscoveryAgent

QList<QBluetoothServiceInfo> QBluetoothServiceDiscoveryAgent::discoveredServices() const

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

Этот список служб накапливает вновь обнаруженные службы из нескольких вызовов start(). Пока не будет вызван clear(), размер списка не может уменьшаться. Это означает, что если удалённое устройство Bluetooth выходит из зоны действия между двумя последующими вызовами start(), список может содержать устаревшие записи.

Примечание: Список служб всегда следует очищать перед изменением режима поиска.

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

QBluetoothServiceDiscoveryAgent::Error QBluetoothServiceDiscoveryAgent::error() const

Возвращает тип последней ошибки. Если поиск служб выполняется для одного remoteAddress(), он вернёт ошибки, произошедшие во время попытки обнаружения служб на этом устройстве. Если remoteAddress() не установлен, а устройства обнаруживаются посредством сканирования, ошибки во время поиска служб на отдельных устройствах не сохраняются, и сигналы не генерируются. В этом случае ошибки вполне нормальны, так как некоторые устройства могут не отвечать на запрос о поиске или больше не находятся в зоне действия. Такие ошибки подавляются. Если не возвращаются службы, можно предположить, что службы обнаружить не удалось.

QString QBluetoothServiceDiscoveryAgent::errorString() const

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

bool QBluetoothServiceDiscoveryAgent::isActive() const

Возвращает true если поиск служб в данный момент активен; в противном случае возвращает false. Активный поиск можно остановить, вызвав stop().

QBluetoothAddress QBluetoothServiceDiscoveryAgent::remoteAddress() const

Возвращает адрес удалённого устройства. Если setRemoteAddress() не вызывался, функция вернёт QBluetoothAddress по умолчанию.

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

bool QBluetoothServiceDiscoveryAgent::setRemoteAddress(const QBluetoothAddress &address)

Устанавливает адрес удалённого устройства на address. Если address имеет значение по умолчанию, службы будут найдены на всех доступных устройствах Bluetooth. Новый адрес можно установить только при отсутствии поиска служб; в противном случае эта функция вернёт false.

На некоторых платформах поиск служб может привести к запросам на сопряжение. Поэтому не рекомендуется выполнять поиск служб на всех устройствах. Эта функция может использоваться для ограничения поиска служб определённым устройством.

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

void QBluetoothServiceDiscoveryAgent::setUuidFilter(const QList<QBluetoothUuid> &uuids)

Устанавливает фильтр UUID на uuids. Будут возвращаться только службы, соответствующие UUID в uuids. Сопоставление применяется к атрибутам ServiceId и ServiceClassIds службы.

Пустой список UUID эквивалентен списку, содержащему только QBluetoothUuid::ServiceClassUuid::PublicBrowseGroup.

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

void QBluetoothServiceDiscoveryAgent::setUuidFilter(const QBluetoothUuid &uuid)

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

Устанавливает фильтр UUID на список, содержащий единственный элемент uuid. Сопоставление применяется к атрибутам ServiceId и ServiceClassIds службы.

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

QList<QBluetoothUuid> QBluetoothServiceDiscoveryAgent::uuidFilter() const

Возвращает фильтр UUID.

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

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

Spec-Zone.ru

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