저전력 블루투스 기기를 찾으려면
startScan()
드림
메서드를 사용하여 축소하도록 요청합니다. 이 메서드는
ScanCallback
을 매개변수로 사용합니다.
이 콜백을 통해 스캔 결과가 반환되므로 반드시 구현해야 합니다.
스캔은 배터리를 많이 사용하므로 다음 사항에 유의해야 합니다.
가이드라인:
- 원하는 기기를 찾는 즉시 스캔을 중단합니다.
- 루프에서 스캔하지 말고 항상 스캔에 시간 제한을 설정하세요. 이전에 사용할 수 있었던 항목이 범위를 벗어났을 수 있으며 배터리가 소모됩니다.
다음 예에서 BLE 앱은
(DeviceScanActivity
)를 통해 사용 가능한 블루투스 저전력 기기 및 디스플레이 검색
사용자에게 제공할 수 있습니다 다음 스니펫은
스캔:
Kotlin
private val bluetoothLeScanner = bluetoothAdapter.bluetoothLeScanner private var scanning = false private val handler = Handler() // Stops scanning after 10 seconds. private val SCAN_PERIOD: Long = 10000 private fun scanLeDevice() { if (!scanning) { // Stops scanning after a pre-defined scan period. handler.postDelayed({ scanning = false bluetoothLeScanner.stopScan(leScanCallback) }, SCAN_PERIOD) scanning = true bluetoothLeScanner.startScan(leScanCallback) } else { scanning = false bluetoothLeScanner.stopScan(leScanCallback) } }
자바
private BluetoothLeScanner bluetoothLeScanner = bluetoothAdapter.getBluetoothLeScanner(); private boolean scanning; private Handler handler = new Handler(); // Stops scanning after 10 seconds. private static final long SCAN_PERIOD = 10000; private void scanLeDevice() { if (!scanning) { // Stops scanning after a predefined scan period. handler.postDelayed(new Runnable() { @Override public void run() { scanning = false; bluetoothLeScanner.stopScan(leScanCallback); } }, SCAN_PERIOD); scanning = true; bluetoothLeScanner.startScan(leScanCallback); } else { scanning = false; bluetoothLeScanner.stopScan(leScanCallback); } }
특정 유형의 주변기기만 검색하려면 대신
startScan(List<ScanFilter>, ScanSettings, ScanCallback)
님,
ScanFilter
목록 제공
검사에서 찾는 장치를 제한하는 객체 및
ScanSettings
객체를 사용하여
스캔에 대한 매개변수를 지정합니다.
다음 코드 샘플은
ScanCallback
님,
BLE 검색 결과를 전달하는 데 사용되는 인터페이스입니다. 결과를 찾으면
DeviceScanActivity
의 목록 어댑터에 추가되어
있습니다.
Kotlin
private val leDeviceListAdapter = LeDeviceListAdapter() // Device scan callback. private val leScanCallback: ScanCallback = object : ScanCallback() { override fun onScanResult(callbackType: Int, result: ScanResult) { super.onScanResult(callbackType, result) leDeviceListAdapter.addDevice(result.device) leDeviceListAdapter.notifyDataSetChanged() } }
자바
private LeDeviceListAdapter leDeviceListAdapter = new LeDeviceListAdapter(); // Device scan callback. private ScanCallback leScanCallback = new ScanCallback() { @Override public void onScanResult(int callbackType, ScanResult result) { super.onScanResult(callbackType, result); leDeviceListAdapter.addDevice(result.getDevice()); leDeviceListAdapter.notifyDataSetChanged(); } };