Bluetooth API включает поддержку работы с профилями Bluetooth. Профиль Bluetooth — это спецификация беспроводного интерфейса для связи между устройствами на основе Bluetooth, например профиль Hands-Free. Чтобы мобильное устройство могло подключиться к беспроводной гарнитуре, оба устройства должны поддерживать профиль Hands-Free.
Bluetooth API предоставляет реализации для следующих профилей Bluetooth:
- Гарнитура . Профиль «Гарнитура» обеспечивает поддержку гарнитур Bluetooth для использования с мобильными телефонами. Android предоставляет класс
BluetoothHeadset
, который является прокси-сервером для управления службой Bluetooth-гарнитуры. Сюда входят профили Bluetooth-гарнитуры и Hands-Free (v1.5). КлассBluetoothHeadset
включает поддержку AT-команд. Дополнительную информацию по этой теме см. в разделе AT-команды, зависящие от поставщика . - А2ДП . Профиль Advanced Audio Distribution Profile (A2DP) определяет, как высококачественный звук может передаваться с одного устройства на другое через соединение Bluetooth. Android предоставляет класс
BluetoothA2dp
, который является прокси-сервером для управления службой Bluetooth A2DP. - Устройство здоровья . Android обеспечивает поддержку профиля устройства Bluetooth Health (HDP). Это позволяет создавать приложения, использующие Bluetooth для связи с медицинскими устройствами, поддерживающими Bluetooth, такими как пульсометры, измерители крови, термометры, весы и т. д. Список поддерживаемых устройств и соответствующие им коды специализации данных устройств см. в разделе «Специализации данных устройств Bluetooth HDP» . Эти значения также упоминаются в спецификации ISO/IEEE 11073-20601 [7] как
MDC_DEV_SPEC_PROFILE_*
в Приложении «Номенклатурные коды». Дополнительные сведения о HDP см. в разделе «Профиль устройства работоспособности» .
Вот основные этапы работы с профилем:
- Получите адаптер по умолчанию, как описано в разделе «Настройка Bluetooth» .
- Настройте
BluetoothProfile.ServiceListener
. Этот прослушиватель уведомляет клиентовBluetoothProfile
, когда они были подключены к службе или отключены от нее. - Используйте
getProfileProxy()
, чтобы установить соединение с прокси-объектом профиля, связанным с профилем. В следующем примере прокси-объект профиля является экземпляромBluetoothHeadset
. - В
onServiceConnected()
получите дескриптор прокси-объекта профиля. - Получив прокси-объект профиля, используйте его для мониторинга состояния соединения и выполнения других операций, имеющих отношение к этому профилю.
В следующем фрагменте кода показано, как подключиться к прокси-объекту BluetoothHeadset
, чтобы можно было управлять профилем гарнитуры:
Котлин
var bluetoothHeadset: BluetoothHeadset? = null // Get the default adapter val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter() private val profileListener = object : BluetoothProfile.ServiceListener { override fun onServiceConnected(profile: Int, proxy: BluetoothProfile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = proxy as BluetoothHeadset } } override fun onServiceDisconnected(profile: Int) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = null } } } // Establish connection to the proxy. bluetoothAdapter?.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET) // ... call functions on bluetoothHeadset // Close proxy connection after use. bluetoothAdapter?.closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset)
Ява
BluetoothHeadset bluetoothHeadset; // Get the default adapter BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); private BluetoothProfile.ServiceListener profileListener = new BluetoothProfile.ServiceListener() { public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = (BluetoothHeadset) proxy; } } public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = null; } } }; // Establish connection to the proxy. bluetoothAdapter.getProfileProxy(context, profileListener, BluetoothProfile.HEADSET); // ... call functions on bluetoothHeadset // Close proxy connection after use. bluetoothAdapter.closeProfileProxy(bluetoothHeadset);
AT-команды, зависящие от производителя
Приложения могут регистрироваться для получения системных широковещательных рассылок предопределенных AT-команд конкретного поставщика, отправляемых гарнитурами (например, команды Plantronics +XEVENT). Например, приложение может получать широковещательные сообщения, указывающие уровень заряда батареи подключенного устройства, и может уведомлять пользователя или предпринимать другие действия по мере необходимости. Создайте широковещательный приемник для намерения ACTION_VENDOR_SPECIFIC_HEADSET_EVENT
для обработки AT-команд конкретного поставщика для гарнитуры.
Профиль медицинского устройства
Android поддерживает профиль устройства Bluetooth Health (HDP). API Bluetooth Health включает классы BluetoothHealth
, BluetoothHealthCallback
и BluetoothHealthAppConfiguration
, которые описаны в разделе Ключевые классы и интерфейсы .
При использовании Bluetooth Health API полезно понимать следующие ключевые концепции HDP:
- Источник
- Медицинское устройство, такое как весы, глюкометр или термометр, которое передает медицинские данные на интеллектуальное устройство, например телефон или планшет Android.
- Раковина
- Умное устройство, которое получает медицинские данные. В приложении HDP приемник представлен объектом
BluetoothHealthAppConfiguration
. - Регистрация
- Процесс, используемый для регистрации приемника для связи с конкретным медицинским устройством.
- Связь
- Процесс, используемый для открытия канала между устройством работоспособности (источником) и интеллектуальным устройством (приемником).
Создайте приложение HDP
Вот основные шаги, необходимые для создания приложения HDP:
Получите ссылку на прокси-объект
BluetoothHealth
. Как и в случае с обычной гарнитурой и устройствами с профилем A2DP, необходимо вызватьgetProfileProxy()
сBluetoothProfile.ServiceListener
и типом профиляHEALTH
, чтобы установить соединение с прокси-объектом профиля.Создайте
BluetoothHealthCallback
и зарегистрируйте конфигурацию приложения (BluetoothHealthAppConfiguration
), которая действует как приемник работоспособности.Установите соединение с медицинским устройством.
При успешном подключении к устройству работоспособности выполните чтение и запись на устройство работоспособности, используя файловый дескриптор. Полученные данные необходимо интерпретировать с помощью диспетчера работоспособности, реализующего спецификации IEEE 11073 .
Когда закончите, закройте канал здоровья и отмените регистрацию приложения. Канал также закрывается при длительном бездействии.