Використання Bluetooth для зв’язку

API для встановлення зв'язку через Bluetooth вважається обгорткою навколо протоколу RFCOMM (Radio Frequency Communication). RFCOMM, своєю чергою, підтримує стандарт передачі RS232 поверх протоколу L2CAP (Logical Link Control and Adaptation Protocol).

На практиці всі ці незрозумілі абревіатури можна назвати механізмом для відкриття мережевих сокетів між двома зв'язаними Bluetooth-пристроями.

ПРИМІТКА

Перш ніж ваш додаток зможе встановлювати зв'язок між пристроями, їх адаптери мають бути спарені (пов'язані). На момент написання цієї книги (Android API level 7) не існувало способу вручну зв'язати локальний Bluetooth-адаптер з віддаленим пристроєм.

Користувач повинен явно дозволити взаємодію двох пристроїв — або через екран налаштувань Bluetooth, або через діалогове вікно у вашій програмі, коли ви намагаєтеся створити сокет для зв'язку між двома неспареними адаптерами.

Ви можете встановити канал зв'язку за протоколом RFCOMM для двонаправленого обміну даними, використовуючи класи:

BluetoothServerSocket — потрібен для створення сокету, щоб встановити зв'язок між двома пристроями, при цьому один з пристроїв виступає в ролі сервера, чекаючи і приймаючи запит на з'єднання;

BluetoothSocket — застосовується для створення нового клієнтського сокету, щоб з'єднатися з очікуваним об'єктом BluetoothServerSocket; як тільки зв'язок буде встановлена, обидва сокети, на стороні клієнта та сервера, можуть бути використані для передачі та прийому потоків даних.

У процесі створення програми, що використовує Bluetooth як канал зв'язку, вам необхідно реалізувати і BluetoothServerSocket, щоб мати можливість очікувати з'єднання, і BluetoothSocket, щобстворювати нові канали та керувати зв'язком.

При підключенні сокет BluetoothServerSocket повертає об'єкт BluetoothSocket, який згодом використовується серверним пристроєм для передачі та отримання даних. Цей BluetoothSocket, що працює на стороні сервера, може бути використаний так само, як і клієнтський сокет. Поняття «сервер» та «клієнт» є актуальними лише на момент встановлення зв'язку. Далі вони ніяк не впливають на спосіб передачі даних.