Ответ 1
"Прямое подключение" противоположно "автоматическому подключению", поэтому, если для параметра autoConnect установлено значение false, вы получите "прямое подключение". Обратите внимание, что для выполнения mBluetoothGatt.connect() также будет использоваться автоматическое подключение.
Остерегайтесь https://code.google.com/p/android/issues/detail?id=69834, которая является ошибкой, затрагивающей более старые версии Android, которые вместо этого могут сделать ваши автоматические подключения прямыми. Это можно обойти с помощью отражения.
Существует несколько недокументированных различий между прямым и автоматическим подключением:
Прямое подключение - это попытка подключения с тайм-аутом 30 секунд. Он приостановит все текущие автоматические подключения, пока идет прямое подключение. Если прямое подключение уже находится в состоянии ожидания, последнее прямое подключение не будет выполнено немедленно, а будет поставлено в очередь и начнется после завершения предыдущего.
При автоматическом подключении вы можете иметь несколько ожидающих подключений одновременно, и они никогда не истечут (до явного прерывания или до отключения Bluetooth).
Если соединение было установлено с помощью автоматического подключения, Android будет автоматически пытаться повторно подключиться к удаленному устройству, когда оно будет отключено, до тех пор, пока вы не вызовете вручную Disnect() или close(). После того как соединение, установленное через прямое соединение, отключается, не предпринимается никаких попыток повторно подключиться к удаленному устройству.
Прямое подключение имеет другой интервал сканирования и окно сканирования с большей нагрузкой, чем автоматическое подключение, что означает, что он будет уделять больше радиосигнала для прослушивания подключаемой рекламы для удаленного устройства, то есть соединение будет установлено быстрее.
НОВОЕ ИЗМЕНЕНИЕ В АНДРОИДЕ 10
Начиная с Android 10, очередь прямого подключения удаляется и больше не приостанавливает автоматическое подключение. Это связано с тем, что прямое подключение теперь использует белый список точно так же, как автоматическое подключение. Окно сканирования/интервал улучшается, пока идет прямое соединение.