Метод readRemoteRssi возвращает значение rssi для подключенного устройства, измеренное контроллером Bluetooth. Обратите внимание, что соединение BLE работает на 37 каналах и переходит на каждое событие соединения.
Значения rssi, полученные при сканировании, являются значениями rssi для каждого рекламного пакета. Реклама происходит только на трех каналах.
Стек Bluetooth на стороне хоста, то есть программное обеспечение на Android, работающее на главном ЦП, не изменяет значение rssi, измеренное контроллером Bluetooth.
Таким образом, единственная причина, по которой я вижу ваши разные результаты, состоит в том, что разные радиоканалы имеют разный шум / качество или сходные. И, как вы, вероятно, можете прочитать в Интернете о том, что rssi будет сильно различаться, и это то, с чем нам придется жить. См. https://www.google.com/search?q=ble+channels для получения подробной информации о различных радиоканалах.
Также обратите внимание, что далеко не все периферийные устройства продолжают размещать рекламу, когда они уже к чему-то подключены.
Если вы считаете, что передача null ничего не дает, возможно, вы могли бы проверить logcat и посмотреть, печатается ли ожидаемое сообщение об ошибке? Однако я не могу объяснить, как сканирование изменило бы значения, возвращаемые readRemoteRssi для уже подключенного устройства, поскольку это не имеет смысла. Если вы думаете, что это чёрная магия, вы должны спросить компанию-контролера Bluetooth;)