Настройте Bluetooth

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

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

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

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

  1. Получите BluetoothAdapter .

    BluetoothAdapter необходим для любой активности Bluetooth. BluetoothAdapter представляет собой собственный адаптер Bluetooth устройства (радио Bluetooth). Чтобы получить BluetoothAdapter , вам сначала нужно иметь Context . Используйте этот контекст для получения экземпляра системной службы BluetoothManager . Вызов BluetoothManager#getAdapter предоставит вам объект BluetoothAdapter . Если getAdapter() возвращает значение null, устройство не поддерживает Bluetooth.

    Например:

    Котлин

    val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java)
    val bluetoothAdapter: BluetoothAdapter? = bluetoothManager.getAdapter()
    if (bluetoothAdapter == null) {
      // Device doesn't support Bluetooth
    }
    

    Ява

    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 через настройки системы (без остановки вашего приложения).

    Например:

    Котлин

    if (bluetoothAdapter?.isEnabled == false) {
      val enableBtIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
      startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT)
    }
    

    Ява

    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 прошло успешно, ваша активность получит код результата 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 Low Energy.

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

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