BluetoothAdapter.startScan () и BluetoothAdapter.startLeScan ()

Моя цель – найти соседние Bluetooth-устройства (устройства LE и «Classic»), чтобы связать существующие видимые соседние устройства с некоторыми функциями, которые делает мое приложение с ним. (Не конкретное устройство / устройства, но все они !!!)

что я знаю:

  • startLeScan() будет обратный вызов только с устройствами BLE
  • Два метода работают по-другому – в то время как startBLeScan () управляется моим кодом с обратными вызовами, в то время как классическое сканирование управляется системным процессом и возвращает BluetoothDevice найденное через трансляции.

Что я точно не знаю:

  • При условии, что уровень API текущего устройства равен 18+, startScan() найдет для себя как открываемые BLE, так и классические устройства.
  • BluetoothDevice.connectGatt() добавлен с новыми API BLE, но должен работать и с классическим bluetooth (возврат услуг GATT …).

Что я хотел бы знать:

  • Если действительно startScan() возвращает оба типа (Classic и BLE), что лучше использовать с точки зрения потребления батареи, характеристик, передовой практики и других аспектов?

Мое приложение будет периодически выполнять фоновое сканирование, поэтому я хотел бы максимально уменьшить влияние потребления батареи.

Solutions Collecting From Web of "BluetoothAdapter.startScan () и BluetoothAdapter.startLeScan ()"

Вы должны начать сканирование классических устройств Bluetooth с помощью startDiscovery () и сканирование устройств Bluetooth LE с помощью функции startLeScan () . Внимание. Выполнение обнаружения устройства – это тяжелая процедура для адаптера Bluetooth и будет потреблять много ресурсов.

Изменить: На LG Nexus 4 с Android 4.4.2 startDiscovery () находит устройства Bluetooth LE. На Samsung Galaxy S3 с Android 4.3 startDiscovery () не находит устройства Bluetooth LE.

У меня есть нерабочий китайский планшет с поддержкой BLE, однако он всегда возвращает устройство, оснащенное BLE, с именем «null», когда я вызываю startLeScan. Проблема была решена путем вызова startDiscovery. Помните, что если ваше приложение нацелено на 23 или выше, вам нужно будет иметь разрешения на размещение для startDiscovery для правильной работы. Надеюсь, поможет.