Я новичок в Android и Kotlin, и я застрял в момент перечисления обнаруженных устройств BLE. Когда устройство BLE было найдено, вызывается обратный вызов onScanResult
, и данные найденного устройства BLE доступны как class ScanResult
.
. Для просмотра списка всех доступных устройств BLE у меня есть mLeDevices: ArrayList<ScanResult> = ArrayList()
, где найдено устройство добавляется, если его еще нет в списке.
private val bleCallback: ScanCallback = object :ScanCallback() {
override fun onScanResult(callbackType: Int, result: ScanResult) {
super.onScanResult(callbackType, result)
if (!mLeDevices.contains(result)) {
mLeDevices.add(result)
}
}
}
Но с этим кодом каждое устройство добавляется в список несколько раз, поскольку ScanResult также содержит значение RSSI, которое варьируется. Я думаю, что я должен проверить, содержит ли mLeDevices
result.device.address
. Если да, просто обновите значение rssi, если нет, добавьте новое устройство в список. Но я не знаю, как реализовать этот подход наилучшим образом. Есть ли в Kotlin способ проверить, содержит ли ArrayList класса элемент, содержащий атрибут? Или есть другое решение для моей проблемы?