LoginSignup
5
2

【Android】Bluetoothについて | Bluetooth Classicのいろいろ

Last updated at Posted at 2023-08-29

Androidには、二種類のBluetoothが組み込まれている

  • AndroidのBluetoothには、 Bluetooth Classic と、 Bluetooth Low Energy(BLE) の二種類がある。

Bluetooth Classic の特徴

  • Bluetoot Classic は、高速なデータの転送が可能、音声や動画のストリーミングなどの用途に適している 
  • Bluetoot Classicは、スマホとワイヤレスイヤホンをペアリングするのに使われる

:point_up: 生活の中でよく聞くBluetoothは Bluetooth Classic を指しているのね

Bluetooth Low Energy(BLE)の特徴

  • Bluetoothと言われるより、BLE(びーえるいー)と言われることが多い
  • 省電力生が高く、小さなデータの送受信に適している
  • 小型のデバイスでも長時間の動作が可能
  • センサーによる温度や、湿度の収集に使用される
  • ビーコンによる場所情報の提供に使用される

:point_up: BLEの方がインターネット上情報が多いイメージ (Classicの方は調べても情報が少ない気がする)

本記事では、Bluetooth Classicについてまとめる

Bluetooth Classic はどのようにして接続するか

  • スマートフォンは、ピコネットという、小さなネットワークを発していている
    pico.png

  • ピコネットはスマホを中心に、イヤホンなど最大7つまでのBluetoothデバイスが接続することができる
    pico2.png

  • 例えば、スマートフォンとBluetoothイヤホンを接続する場合、スマートフォンがピコネットの「マスター」となり、イヤホンが「スレーブ」となる
    pico3.png

  • 接続が確立されると、スマートフォンとイヤホンの間で「コネクション」が行われて、このコネクションを通じて、スマートフォンとイヤホンは「サービス」と「プロファイル」と呼ばれる機能や設定をやりとりする
    pico4.png

:frowning2: サービスとプロファイルがちょっと難しいポイント

サービスとは

  • サービスは、Bluetoothデバイスの役割を定義し、他のBluetoothデバイスと通信するためのルールや方法を提供するもの
  • サービスは、UUIDによって一意に識別される
  • スマホなどのマスターは、そのUUIDを使用して、Bluetooth サービスに接続する

プロファイルとは

  • プロファイルは、どのように通信を行うかを定義するもの
  • プロファイルには、いろいろなものがある

:point_down: こんな感じで、たくさんのプロファイルが用意されている
https://ja.wikipedia.org/wiki/Bluetooth%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E4%B8%80%E8%A6%A7

ちょっと難しいけど、サービスは、Bluetoothのデバイス間で通信するために必要な機能を定義するものであり、プロファイルは、Bluetoothデバイスがどのように通信を行うかを定義するものって感じ。

ワイヤレスイヤホンを例に、サービスとプロファイルの説明をしてみる

  • 例えば、A2DPプロファイルは、音楽や音声を高品質でストリーミングするために使用されるプロファイルのことで、このサービスは、スマートフォンがイヤホンに送信する音声データを処理し、イヤホンから音声を再生することができる
  • HFPプロファイルは、「通話サービス」を定義しており、 スマートフォンは、このサービスを使用して、通話関連のデータをイヤホンに送信し、イヤホンが通話関連の機能を提供することができる
  • これらのサービスを使用するために、スマートフォンは、Bluetooth搭載機器の持っているUUIDを使用する
    uuid.png

:point_up: サービスは、Bluetoothデバイスが提供する機能の種類を示すもの

:v: プロファイルは、Bluetoothの機能をどのように実現するかを定義するもの

:fist: う〜〜ん簡潔に言うと・・・
Bluetoothデバイスは、UUIDによって提供されるサービスを特定する!

ワイヤレスイヤホンが、指定されたUUIDをサポートしている場合、それはデータの送受信が可能であると認識することができる!

Bluetoothクラシックの接続手順

1 スキャン
2 ペアリング
3 接続
4 切断

ちなみに、スキャンとペアリングの違いについて

ペアリングは、
デバイス同士が初めて出会ったときに、お互いを認識し合い、信頼関係を築くプロセスのこと。
このタイミングで鍵とかを交換しているらしい。

接続は、
デバイス同士が既にペアリング済みの場合に行うもので、実際にデータを送受信するための通信路が開かれる。接続が確立されると、データのやり取りが可能になる。

:point_up: これが、最初の方に言っていたマスターとスレーブのコネクションのこと。

実装で必要なこと

BluetoothAdapterの取得

  • Bluetoothデバイスにアクセスするために、BluetoothAdapterを取得する

スキャン

  • Bluetoothデバイスを検索するためには、BluetoothAdapter.startDiscovery()メソッドを使用する

ペアリング

  • ペアリングは、2つのBluetoothデバイス間で信頼関係を確立することで、Bluetooth接続のために必要
  • BluetoothDevice.createBond()メソッドを使用して、デバイスをペアリングする

接続

  • BluetoothSocketオブジェクトを使用して、Bluetoothデバイスに接続する
  • BluetoothSocket.connect()メソッドを使用して、Bluetoothデバイスに接続する

通信

  • BluetoothSocketオブジェクトを使用して、Bluetoothデバイスと通信を行う
  • BluetoothSocket.getInputStream()BluetoothSocket.getOutputStream()メソッドを使用して、データを送受信する

切断

  • BluetoothSocket.close()メソッドを使用して、Bluetoothデバイスとの接続を切断する

以上です

いずれ、実際のコードも載せたいと思ってます!(綺麗に整えたら・・・)

BLEの方が需要あるのに、Bluetooth Classicでごめんなさい・・・。

Bluetoothむずかしい・・・・。
がんばるぞい!!

参考記事

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2