Android

BLE ) isConnectable

Machine_웅 2025. 3. 13. 16:23
728x90
반응형

Android 에서 BluetoothLeScanner를 가지고, 주변 기기를 스캔을 하게되면

 

-  void onScanResult(int callbackType, ScanResult result) 또는

-  void onBatchScanResults(List<ScanResult> results)  로 스캔한 결과를 가지고 온다.

 

ScanResult 가 무었을 담고 있는지 확인해보면. 

 

공개 방법

int describeContents()이 Parcelable 인스턴스의 마샬링된 표현에 포함된 특수 객체의 종류를 설명하세요.
boolean equals(Object obj)다른 객체가 이 객체와 "같은지" 여부를 나타냅니다.
int getAdvertisingSid()광고 세트 ID를 반환합니다.
int getDataStatus()데이터 상태를 반환합니다.
BluetoothDevice getDevice()Bluetooth 장치 주소로 식별된 원격 Bluetooth 장치를 반환합니다.
int getPeriodicAdvertisingInterval()1.25ms 단위로 주기적 광고 간격을 반환합니다.
int getPrimaryPhy()이 광고가 수신된 기본 물리적 계층을 반환합니다.
int getRssi()수신된 신호 강도를 dBm 단위로 반환합니다.
ScanRecord getScanRecord()광고와 스캔 응답의 조합인 스캔 레코드를 반환합니다.
int getSecondaryPhy()이 광고가 수신된 보조 물리적 계층을 반환합니다.
long getTimestampNanos()스캔 기록이 관찰된 부팅 이후 타임스탬프를 반환합니다.
int getTxPower()전송 전력을 dBm 단위로 반환합니다.
int hashCode()객체의 해시 코드 값을 반환합니다.
boolean isConnectable()이 객체가 연결 가능한 스캔 결과를 나타내는 경우 true를 반환합니다.
boolean isLegacy()이 개체가 레거시 스캔 결과를 나타내는 경우 true를 반환합니다.
String toString()객체의 문자열 표현을 반환합니다.
void writeToParcel(Parcel dest, int flags)이 물체를 소포로 펴세요.

 

 

위의 정보들을 결과로 반환해주는 것을 알 수 있다. 

여기서 궁금한 것은, isConnectable 인데  연결이 불가능한 BLE 주변기기를 왜 스캔해줬을까가 의문이다.

 

그래서 isConnectable == false 인것들은 무엇인지, 무슨사유인지 알아보고자 한다.

 

 

1. 브로드캐스트(광고) 전용 기기
일부 BLE 기기는 연결이 불가능한 "브로드캐스트(Broadcast) 전용" 기기일 수 있습니다.
예시 )
비콘(Beacon)
단순한 센서 데이터 전송 기기 (예: 온도 센서, 습도 센서 등)


 2. 연결 제한 모드인 기기
일부 BLE 기기는 특정 조건을 만족해야만 연결을 허용하도록 설계되어 있습니다.
- 페어링된 기기만 연결을 허용.
- 특정 인증 키를 요구.
- 특정 시간 동안만 연결 가능.

예시)
BLE 스마트 락 → 초기 상태에서는 누구나 연결 가능 → 페어링 후에는 등록된 기기만 허용.
BLE 헬스케어 기기 → 초기 페어링은 누구나 가능 → 이후 등록된 사용자만 허용.

3. 이미 다른 기기와 연결 중
BLE 기기는 동시에 하나의 중앙(Central) 기기와만 연결이 가능한 경우가 많습니다.
이미 다른 기기와 연결되어 있다면, 다른 기기에서는 스캔은 가능하지만 연결은 불가능할 수 있습니다.


 4. BLE 광고 패킷 설정 문제
일부 BLE 기기는 광고 패킷에 "연결 가능" 플래그를 설정하지 않은 상태로 방송될 수 있습니다.

5. 권한 및 위치 서비스 문제 (Android 6.0 이상)
Android에서는 위치 서비스가 활성화되어 있어야 BLE 스캔이 정상적으로 작동합니다.
위치 서비스가 꺼져 있으면, 스캔은 가능해도 연결이 실패할 수 있습니다.


6. 권한 부족
BLUETOOTH_CONNECT, BLUETOOTH_SCAN, ACCESS_FINE_LOCATION 권한이 없으면 스캔과 연결이 제한될 수 있습니다

 

728x90
반응형