Настроить Bluetooth

Прежде чем приложение сможет обмениваться данными через Bluetooth или Bluetooth с низким энергопотреблением, необходимо убедиться, что устройство поддерживает Bluetooth, и если да, то включить его. Обратите внимание, что эта проверка необходима, только если атрибуту android:required в записи файла манифеста <uses-feature.../> присвоено значение false.

Если Bluetooth не поддерживается, то все функции, связанные с ним, должны быть отключены. Если Bluetooth поддерживается, но отключен, вы можете попросить пользователя включить его, не выходя из приложения.

Чтобы использовать перечисленные ниже API, сначала нужно добавить разрешения Bluetooth в файл манифеста.

После того как разрешения предоставлены, настройка Bluetooth выполняется в два этапа с помощью BluetoothAdapter:

  1. Получите 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
    }
  2. Включите 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, вы можете пропустить шаг 2 в предыдущих шагах.

После включения Bluetooth на устройстве вы можете использовать как наушники Bluetooth, так и Bluetooth с низким энергопотреблением.

Для Bluetooth Classic вы можете находить устройства Bluetooth и подключаться к ним.

Для Bluetooth с низким энергопотреблением вы можете находить устройства BLE, подключаться к серверу GATT и передавать данные BLE.