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