13,000
回編集
666行目: | 666行目: | ||
* 1度ペアリングされたデバイスは、特別な設定がない限り、自動的に再接続可能になる。 | * 1度ペアリングされたデバイスは、特別な設定がない限り、自動的に再接続可能になる。 | ||
<br> | <br> | ||
==== | ==== ペアリングの準備 ==== | ||
<code>QBluetoothLocalDevice</code>クラスのインスタンスを生成して、ローカルのBluetoothアダプタを初期化する。<br> | <code>QBluetoothLocalDevice</code>クラスのインスタンスを生成して、ローカルのBluetoothアダプタを初期化する。<br> | ||
<br> | <br> | ||
677行目: | 677行目: | ||
これらの処理は非同期で行われており、シグナル / スロットメカニズムを通じて状態の変更が通知される。<br> | これらの処理は非同期で行われており、シグナル / スロットメカニズムを通じて状態の変更が通知される。<br> | ||
そのため、ユーザインターフェースと組み合わせる場合は、各シグナルに応じて適切なUIの更新を行う必要がある。<br> | そのため、ユーザインターフェースと組み合わせる場合は、各シグナルに応じて適切なUIの更新を行う必要がある。<br> | ||
<br> | |||
<syntaxhighlight lang="c++"> | |||
#include <QBluetoothLocalDevice> | |||
#include <QDebug> | |||
QBluetoothLocalDevice localDevice; | |||
// シグナルとスロットの接続 | |||
connect(&localDevice, &QBluetoothLocalDevice::pairingFinished, [](const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing status) { | |||
qDebug() << "ペアリング完了"; | |||
}); | |||
connect(&localDevice, &QBluetoothLocalDevice::pairingDisplayConfirmation, [](const QBluetoothAddress &address, QString pin) { | |||
qDebug() << "ペアリング確認:" << pin; | |||
}); | |||
connect(&localDevice, &QBluetoothLocalDevice::pairingDisplayPinCode, [](const QBluetoothAddress &address, QString pin) { | |||
qDebug() << "PINコード:" << pin; | |||
}); | |||
connect(&localDevice, &QBluetoothLocalDevice::error, []() { | |||
qDebug() << "エラー発生"; | |||
}); | |||
</syntaxhighlight> | |||
<br> | <br> | ||
==== ペアリング要求 ==== | ==== ペアリング要求 ==== | ||
リモートデバイスのBluetoothアドレス (QBluetoothAddressクラス) を指定して、<code>QBluetoothLocalDevice::requestPairing</code>メソッドを実行する。<br> | リモートデバイスのBluetoothアドレス (QBluetoothAddressクラス) を指定して、<code>QBluetoothLocalDevice::requestPairing</code>メソッドを実行する。<br> | ||
この時、ペアリングモードとして<code>QBluetoothLocalDevice::Paired</code>を指定する。<br> | この時、ペアリングモードとして<code>QBluetoothLocalDevice::Paired</code>を指定する。<br> | ||
<br> | |||
<syntaxhighlight lang="c++"> | |||
#include <QBluetoothAddress> | |||
// デバイスのBluetoothアドレスを設定 | |||
QBluetoothAddress address("XX:XX:XX:XX:XX:XX"); | |||
// ペアリング開始 | |||
localDevice.requestPairing(address, QBluetoothLocalDevice::Paired); | |||
</syntaxhighlight> | |||
<br> | <br> | ||
==== ペアリング処理中 ==== | ==== ペアリング処理中 ==== | ||
688行目: | 722行目: | ||
<br> | <br> | ||
<code>QBluetoothLocalDevice::pairingDisplayConfirmation</code>シグナルを受信した場合は、ユーザに確認を求めて、<code>QBluetoothLocalDevice::pairingConfirmation</code>メソッドで応答する。<br> | <code>QBluetoothLocalDevice::pairingDisplayConfirmation</code>シグナルを受信した場合は、ユーザに確認を求めて、<code>QBluetoothLocalDevice::pairingConfirmation</code>メソッドで応答する。<br> | ||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// ペアリング確認に応答 | |||
localDevice.pairingConfirmation(true); // 承認する場合 | |||
localDevice.pairingConfirmation(false); // 拒否する場合 | |||
</syntaxhighlight> | |||
<br> | <br> | ||
==== ペアリング完了 ==== | ==== ペアリング完了 ==== | ||
693行目: | 733行目: | ||
<br> | <br> | ||
エラーが発生した場合は、<code>QBluetoothLocalDevice::error</code>シグナルを受信する。<br> | エラーが発生した場合は、<code>QBluetoothLocalDevice::error</code>シグナルを受信する。<br> | ||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// ペアリング結果の確認 | |||
#include <QBluetoothLocalDevice> | |||
#include <QDebug> | |||
// ペアリング完了シグナルの処理 | |||
connect(&localDevice, &QBluetoothLocalDevice::pairingFinished, [](const QBluetoothAddress &address, QBluetoothLocalDevice::Pairing status) { | |||
switch (status) { | |||
case QBluetoothLocalDevice::Paired: | |||
qDebug() << "ペアリング成功:" << address.toString(); | |||
break; | |||
case QBluetoothLocalDevice::Unpaired: | |||
qDebug() << "ペアリング解除:" << address.toString(); | |||
break; | |||
default: | |||
qDebug() << "不明な状態:" << address.toString(); | |||
break; | |||
} | |||
}); | |||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// エラーの確認 | |||
// QBluetoothLocalDevice::errorシグナルを受信してエラー発生を検知する | |||
// エラーシグナルの処理 | |||
connect(&localDevice, &QBluetoothLocalDevice::error, []() { | |||
qDebug() << "ペアリングでエラーが発生しました"; | |||
}); | |||
</syntaxhighlight> | |||
<br> | <br> | ||
==== ペアリング管理 ==== | ==== ペアリング管理 ==== | ||
699行目: | 771行目: | ||
<br> | <br> | ||
ペアリングを解除する場合は、ペアリングモードを<code>QBluetoothLocalDevice::Unpaired</code>に指定して<code>QBluetoothLocalDevice::requestPairing</code>メソッドを実行する。<br> | ペアリングを解除する場合は、ペアリングモードを<code>QBluetoothLocalDevice::Unpaired</code>に指定して<code>QBluetoothLocalDevice::requestPairing</code>メソッドを実行する。<br> | ||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// ペアリング状態の確認 | |||
QBluetoothLocalDevice::Pairing status = localDevice.pairingStatus(address); | |||
// ペアリング済みデバイスの取得 | |||
QList<QBluetoothAddress> devices = localDevice.connectedDevices(); | |||
</syntaxhighlight> | |||
<br> | <br> | ||
==== 組み合わせ ==== | ==== 組み合わせ ==== |