Android BLE ScanResult Обработка списка - PullRequest
0 голосов
/ 26 апреля 2020

Я новичок в 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 класса элемент, содержащий атрибут? Или есть другое решение для моей проблемы?

...