クラシック Bluetooth の使用
Bluetooth の使用 への移動
Bluetooth コア仕様では、バージョン 4.0 以降、Bluetooth Low Energy(Bluetooth LE)などの異なる種類の "Bluetooth" プロトコルが定義されているため、元の Bluetooth プロトコルは現在 "クラシック Bluetooth"(従来の Bluetooth)と呼ばれています。クラシック Bluetooth の転送速度は Bluetooth Low Energy よりもはるかに高速ですが、その反面、消費電力が大きくなっています。
アプリケーションにクラシック Bluetooth サポートを実装するには:
目次
サポート対象プラットフォーム
プラットフォーム | サポートされてるか? |
---|---|
Windows* |
![]() |
macOS |
![]() |
iOS |
|
Android |
![]() |
*Windows Server では Bluetooth をサポートしていません(「Windows での Bluetooth の汎用サポート」を参照)。
iOS でのクラシック Bluetooth
RTL は、クラシック Bluetooth を iOS ではサポートしていません。理由は、ハートウェア製作者のみが、クラシック Bluetooth 用の SDK へのアクセスを与えられるからです。詳細については、「Apple Developers: MFi Program」を参照してください。
アプリケーションへの TBluetooth コンポーネントの追加
RTL には、TBluetooth コンポーネントが用意されています。これにより、RTL のすべてのクラシック Bluetooth 機能にアクセスすることができます。[ツール パレット]の[TBluetooth
]コンポーネントをアプリケーションのフォームまたはデータ モジュールにドラッグします。
リモート デバイスの検出とそれらとのペア設定
アプリケーションでクラシック Bluetooth を使ってリモート アプリケーションに接続するには、まず、各アプリケーションの動作デバイスを Bluetooth を使って互いにペアにする必要があります。
デバイスを検出可能にする
2 つのデバイスの一方は検出可能でなければなりません。つまり、そのデバイスを他の Bluetooth 対応デバイスからクラシック Bluetooth を使って検出できる必要があります。
ほとんどのプラットフォームでは、アプリケーションの動作デバイスを検出可能にするようにユーザーに要求できます。TBluetooth.StartDiscoverable を呼び出して要求を開始し、TBluetooth.OnDiscoverableEnd イベントを処理します。OnDiscoverableEnd
は、デバイスを検出可能にすることをユーザーが受け入れた場合に発生します。
リモート デバイスを検出する
デバイスのうちの一方が検出可能になったら、もう一方のデバイスはその検出可能なデバイスを検出する必要があります。
もう一方のデバイスで TBluetooth.DiscoverDevices を呼び出して検出操作を開始し、範囲内の検出可能なリモート デバイスのリストを取得します。TBluetooth.OnDiscoveryEnd イベントを処理して、検出操作が完了するとすぐに、検出されたリモート デバイスのリストを取得します。TBluetooth.LastDiscoveredDevices プロパティを使用すると、前回検出されたデバイスのリストにいつでもアクセスできます。
リモート デバイスとペアにする
アプリケーションでリモート デバイスのリストを取得したら、それらのデバイス(TBluetoothDevice)のどれとでもペア設定要求を開始できます。
ペア設定要求を開始するには、TBluetooth.Pair を呼び出します。実際のペア設定操作はオペレーティング システムで処理され、ユーザーはオペレーティング システムの誘導に従ってペア設定を行います。
ペア設定操作が成功したかどうかを知るには、TBluetoothDevice.IsPaired の値を確認します。
ペアになったリモート デバイスへの接続の確立
アプリケーションの動作デバイスがリモート デバイスとペアになったら、そのリモート デバイスで動作しているアプリケーションにクラシック Bluetooth を使って接続できます。
ペアになったデバイスで動作する 2 つのアプリケーションがクラシック Bluetooth を使って互いに接続するには:
- 一方のアプリケーション(サーバー)では、サービスを公開する必要があります。サービスを公開するには、TBluetooth.CreateServerSocket を呼び出し、その結果返される TBluetoothServerSocket のインスタンスを保存します。
- もう一方のアプリケーション(クライアント)では、以下の手順で、サーバーアプリケーションのサービスを検出し、それに接続する必要があります。
- サーバー アプリケーションの動作するリモート デバイス(TBluetoothDevice)を TBluetooth.PairedDevices の中から見つけます。
- 使用するサービス(TBluetoothService)を TBluetoothDevice.LastServiceList の中から見つけます。
- TBluetoothDevice.CreateClientSocket を呼び出して、リモート サービスに接続するためのソケット(TBluetoothSocket)を取得します。リモート サービスを指定するには、サービスの UUID プロパティを
TBluetoothDevice.CreateClientSocket
に渡します。 - TBluetoothSocket.Connect を呼び出して、接続を開始します。
- サーバー アプリケーションに戻り、TBluetoothServerSocket.Accept を呼び出して、接続要求を受け入れます。
TBluetoothServerSocket.Accept
は、リモート アプリケーションのソケットに既に接続している通常のクラシック Bluetooth ソケット(TBluetoothSocket)を返します。
データの送受信
(クライアントまたはサーバーとして機能する)リモート アプリケーションに接続している TBluetoothSocket のインスタンスを取得したら、そのリモート アプリケーションとの間で任意のデータをバイト配列として送受信できます。リモート アプリケーションとの間でデータを送信および受信するには、それぞれ TBluetoothSocket.SendData と TBluetoothSocket.ReadData を使用します。