Платформа 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 — как уже сопряженные, так и новые.
- Подключитесь к устройству 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
, когда они были подключены к внутренней службе, запускающей определенный профиль, или отключены от нее.