Прежде чем приложение сможет обмениваться данными через Bluetooth или Bluetooth с низким энергопотреблением, необходимо убедиться, что устройство поддерживает Bluetooth, и если да, то включить его. Обратите внимание, что эта проверка необходима, только если атрибуту android:required в записи файла манифеста <uses-feature.../> присвоено значение false.
Если Bluetooth не поддерживается, то все функции, связанные с ним, должны быть отключены. Если Bluetooth поддерживается, но отключен, вы можете попросить пользователя включить его, не выходя из приложения.
Чтобы использовать перечисленные ниже API, сначала нужно добавить разрешения Bluetooth в файл манифеста.
После того как разрешения предоставлены, настройка Bluetooth выполняется в два этапа с помощью BluetoothAdapter:
Получите
BluetoothAdapter.Разрешение
BluetoothAdapterтребуется для любых действий, связанных с Bluetooth.BluetoothAdapterпредставляет собственный адаптер Bluetooth устройства (радиомодуль Bluetooth). Чтобы получитьBluetoothAdapter, сначала нужно получитьContext. Используйте этот контекст, чтобы получить экземпляр системного сервисаBluetoothManager. ВызовBluetoothManager#getAdapterвозвращает объектBluetoothAdapter. ЕслиgetAdapter()возвращает null, значит устройство не поддерживает Bluetooth.Пример:
Kotlin
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java) val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter() if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Java
BluetoothManager bluetoothManager = getSystemService(BluetoothManager.class); BluetoothAdapter bluetoothAdapter = bluetoothManager.getAdapter(); if (bluetoothAdapter == null) { // Device doesn't support Bluetooth }
Включите Bluetooth.
Затем убедитесь, что Bluetooth включен. Вызовите
isEnabled(), чтобы проверить, включен ли Bluetooth. Если метод возвращает значение false, Bluetooth отключен. Чтобы запросить включение Bluetooth, вызовитеstartActivityForResult(), передав действие намеренияACTION_REQUEST_ENABLE. Этот вызов отправляет запрос на включение Bluetooth через системные настройки (без остановки приложения).Пример:
Kotlin
if (bluetoothAdapter?.isEnabled == false) { val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE) startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT) }
Java
if (!bluetoothAdapter.isEnabled()) { Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); }
Появится диалоговое окно с запросом разрешения пользователя на включение Bluetooth, как показано на рисунке 1. Если пользователь предоставит разрешение, система начнет включать Bluetooth, а фокус вернется к вашему приложению после завершения (или сбоя) процесса.
Рисунок 1. Диалоговое окно включения Bluetooth.
Константа REQUEST_ENABLE_BT, передаваемая в startActivityForResult(), – это локально определенное целое число, которое должно быть больше или равно 0. Система передает эту константу обратно в вашу реализацию onActivityResult() в качестве параметра requestCode.
Если Bluetooth включен, ваш объект activity получает код результата RESULT_OK в обратном вызове onActivityResult(). Если Bluetooth не был включен из-за ошибки (или пользователь выбрал "Запретить"), то код результата будет RESULT_CANCELED.
Приложение также может прослушивать широковещательное намерение ACTION_STATE_CHANGED, которое система транслирует при каждом изменении состояния Bluetooth. В этой трансляции есть дополнительные поля EXTRA_STATE и EXTRA_PREVIOUS_STATE, которые содержат новое и старое состояния Bluetooth соответственно. Возможные значения для этих дополнительных полей: STATE_TURNING_ON, STATE_ON, STATE_TURNING_OFF и STATE_OFF.
Прослушивание этой трансляции может быть полезно, если вашему приложению необходимо обнаруживать изменения состояния Bluetooth, сделанные во время выполнения.
После включения Bluetooth на устройстве вы можете использовать как наушники Bluetooth, так и Bluetooth с низким энергопотреблением.
Для Bluetooth Classic вы можете находить устройства Bluetooth и подключаться к ним.
Для Bluetooth с низким энергопотреблением вы можете находить устройства BLE, подключаться к серверу GATT и передавать данные BLE.