Обзор Bluetooth

Платформа Android включает поддержку сетевого стека Bluetooth, который позволяет устройству обмениваться данными по беспроводной сети с другими устройствами Bluetooth. Платформа приложения обеспечивает доступ к функциям Bluetooth через API-интерфейсы Bluetooth. Эти API позволяют приложениям подключаться к другим устройствам Bluetooth, обеспечивая функции беспроводной связи «точка-точка» и «многоточка».

Используя API Bluetooth, приложение может выполнять следующие действия:

  • Выполните поиск других устройств Bluetooth.
  • Запросите у локального адаптера Bluetooth сопряженные устройства Bluetooth.
  • Установите каналы RFCOMM.
  • Подключайтесь к другим устройствам посредством обнаружения служб.
  • Передача данных на другие устройства и с них.
  • Управление несколькими соединениями.

В этой теме основное внимание уделяется классическому Bluetooth . Классический Bluetooth — правильный выбор для операций с более интенсивным использованием батареи, включая потоковую передачу и связь между устройствами. Для устройств Bluetooth с низким энергопотреблением рассмотрите возможность использования соединений Bluetooth Low Energy .

В этой документации описаны различные профили Bluetooth и объясняется, как использовать API-интерфейсы Bluetooth для выполнения четырех основных задач, необходимых для связи с использованием Bluetooth:

  • Настройка Bluetooth.
  • Поиск устройств, которые либо сопряжены, либо доступны в локальной области.
  • Подключение устройств.
  • Передача данных между устройствами.

Демонстрацию использования API Bluetooth см. в примере приложения Bluetooth Chat .

Основы

Чтобы устройства с поддержкой Bluetooth могли передавать данные между собой, они должны сначала сформировать канал связи с помощью процесса сопряжения. Одно устройство, обнаруживаемое, становится доступным для входящих запросов на соединение. Другое устройство находит доступное для обнаружения устройство с помощью процесса обнаружения службы. После того как обнаруживаемое устройство принимает запрос на сопряжение, два устройства завершают процесс связывания, в ходе которого они обмениваются ключами безопасности. Устройства кэшируют эти ключи для дальнейшего использования. После завершения процессов сопряжения и связывания два устройства обмениваются информацией. По завершении сеанса устройство, инициировавшее запрос на сопряжение, освобождает канал, который связал его с обнаруживаемым устройством. Однако два устройства остаются связанными, поэтому они могут автоматически повторно подключиться во время будущего сеанса, пока они находятся в пределах досягаемости друг друга и ни одно из устройств не разорвало связь.

Использование API Bluetooth требует объявления нескольких разрешений в файле манифеста. Как только ваше приложение получит разрешение на использование Bluetooth, ему необходимо получить доступ к BluetoothAdapter и определить, доступен ли Bluetooth на устройстве . Если Bluetooth доступен, для установки соединения необходимо выполнить три шага:

Некоторые устройства используют определенный профиль Bluetooth , в котором указываются предоставляемые им данные.

Ключевые классы и интерфейсы

Все API Bluetooth доступны в пакете android.bluetooth . Ниже приведены классы и интерфейсы, необходимые для создания соединений Bluetooth:

BluetoothAdapter
Представляет локальный адаптер Bluetooth (радио Bluetooth). BluetoothAdapter — это точка входа для всего взаимодействия Bluetooth. Используя это, вы можете обнаружить другие устройства Bluetooth, запросить список связанных (сопряженных) устройств, создать экземпляр BluetoothDevice с использованием известного MAC-адреса и создать BluetoothServerSocket для прослушивания сообщений от других устройств.
BluetoothDevice
Представляет удаленное устройство Bluetooth. Используйте это, чтобы запросить соединение с удаленным устройством через BluetoothSocket или запросить информацию об устройстве, такую ​​как его имя, адрес, класс и состояние связи.
BluetoothSocket
Представляет интерфейс сокета Bluetooth (аналогично TCP Socket ). Это точка подключения, которая позволяет приложению обмениваться данными с другим устройством Bluetooth с помощью InputStream и OutputStream .
BluetoothServerSocket
Представляет открытый сокет сервера, который прослушивает входящие запросы (аналогично TCP ServerSocket ). Чтобы соединить два устройства, одно устройство должно открыть сокет сервера с этим классом. Когда удаленное устройство Bluetooth отправляет запрос на подключение к этому устройству, устройство принимает соединение, а затем возвращает подключенный BluetoothSocket .
BluetoothClass
Описывает общие характеристики и возможности устройства Bluetooth. Это набор свойств, доступный только для чтения, который определяет классы и службы устройства. Хотя эта информация дает полезную подсказку относительно типа устройства, атрибуты этого класса не обязательно описывают все профили и службы Bluetooth, которые поддерживает устройство.
BluetoothProfile
Интерфейс, представляющий профиль Bluetooth. Профиль Bluetooth — это спецификация беспроводного интерфейса для связи между устройствами на основе Bluetooth. Примером может служить профиль Hands-Free. Дополнительные сведения о профилях см. в разделе Профили Bluetooth .
BluetoothHeadset
Обеспечивает поддержку гарнитур Bluetooth для использования с мобильными телефонами. Сюда входят как профиль Bluetooth-гарнитуры, так и профиль громкой связи (v1.5).
BluetoothA2dp
Определяет, как высококачественный звук может передаваться с одного устройства на другое через соединение Bluetooth с использованием профиля расширенного распределения звука (A2DP).
BluetoothHealth
Представляет прокси-сервер профиля устройства работоспособности, который управляет службой Bluetooth.
BluetoothHealthCallback
Абстрактный класс, который вы используете для реализации обратных вызовов BluetoothHealth . Вы должны расширить этот класс и реализовать методы обратного вызова, чтобы получать обновления об изменениях в состоянии регистрации приложения и состоянии канала Bluetooth.
BluetoothHealthAppConfiguration
Представляет конфигурацию приложения, которую стороннее приложение Bluetooth Health регистрирует для связи с удаленным устройством Bluetooth Health.
BluetoothProfile.ServiceListener
Интерфейс, который уведомляет клиентов межпроцессного взаимодействия (IPC) BluetoothProfile , когда они были подключены к внутренней службе, запускающей определенный профиль, или отключены от нее.