마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

scan을 받아올때 갯수 제한 주는법

0 추천

recyclerview를 이용하여 address,name,rssi를 받아오는데 name은 두개의 기기만 받아오도록 하고 각각 rssi 값을 10개씩만 받아오게 하고 싶은데 어떻게 해야할까요? count를 이용해보았는데 실패했습니다 (address와 name은 같으므로 계속 변하는 rssi값만 10개를 받아오고 싶습니다 )

override fun onScanResult(callbackType: Int, result: ScanResult?) {
            super.onScanResult(callbackType, result)
            result?.let {

                if (it.device.name != null && it.rssi != null && (it.device.name == "Beepi-6220" || it.device.name == "BeePi-51a"))
                    devicesArr.add(ScanResults(it.device.address, it.device.name, it.rssi))
                recyclerViewAdapter.notifyDataSetChanged()
            }
        }
    }

 

당당 (810 포인트) 님이 2021년 5월 6일 질문

1개의 답변

0 추천

리스트에 추가한 뒤 뒤에서 10 개만 잘라내세요.

var devicesAttr = arrayListOf(...)
if (it.device.name != null && it.rssi != null && (it.device.name == "Beepi-6220" || it.device.name == "BeePi-51a")) {
     val deivces = devicesArr
           .add(ScanResults(it.device.address, it.device.name, it.rssi))
           .takeLast(10)
     deviceAttr = devices
     recyclerViewAdapter.notifyDataSetChanged()
}

만약 신호가 너무 빨리 온다면 Concurrency 이슈가 생길 수 있으므로, 이 부분은 확인을 해서 처리해 주셔야할 것 같습니다.

spark (227,530 포인트) 님이 2021년 5월 7일 답변
...