늘 겸손하게

안드로이드 블루투스 신호 강도(RSSI) 찾기 본문

Programming/Android

안드로이드 블루투스 신호 강도(RSSI) 찾기

besforyou999 2021. 8. 19. 14:18

ㅎㅇ

 

안녕하세요 besforyou입니다

 

이번 글에서는 주변 블루투스 기기 신호 강도 찾는 방법에 대하여 소개하겠습니다

 

출처 : https://stackoverflow.com/questions/15312858/get-bluetooth-signal-strength


1. 블루투스 어댑터 생성

 

BluetoothAdapter BTAdapter = BluetoothAdapter.getDefaultAdapter();

 

위의 명령으로 BluetoothAdpater를 생성 가능합니다. 생성한 후 onCreate 하단에 

 

registerReceiver(receiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));

 

를 추가하여 블루투스 리시버를 등록합니다. 리시버는 아래에 따로 생성해줍니다

 

 

2. startDiscovery()

 

BluetoothAdapater의 startDiscovery() 메소드로 주변 블루투스 기기 검색을 시작합니다.

 

BTAdapter.startDiscovery();

 

 

3. 블루투스 리시버 생성

 

블루투스 리시버를 생성합니다. 리시버 내부에 블루투스 기기가 감지될 경우 수행할 코드를 삽입할 수 있습니다.

 

private final BroadcastReceiver receiver = new BroadcastReceiver() {
	@Override
    public void onReceive(Context context, Intent intent) {
    
    	String action = intent.getAction();
        
        ...
        
     }
};

 

4. 블루투스 신호 강도 RSSI 받기

 

예시 : 받은 RSSI값을 Toast로 출력하는 코드

 

 

private final BroadcastReceiver receiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent) {

        String action = intent.getAction();
        if(BluetoothDevice.ACTION_FOUND.equals(action)) {
            int  rssi = intent.getShortExtra(BluetoothDevice.EXTRA_RSSI,Short.MIN_VALUE);
            Toast.makeText(getApplicationContext(),"  RSSI: " + rssi + "dBm", Toast.LENGTH_SHORT).show();
        }
    }
};

 

BluetoothDevice.ACTION_FOUND.equals(action) : 블루투스 장치가 검색된 경우 true 반환

 

intent.getShortExtra(BluetoothDevice.EXTRA_RSSI, Short.MIN_VALUE) : 블루투스 신호 강도를 rssi 형식으로 반환

 

Toast.makeText(getApplicationContext(), "RSSI: " + rssi + "dBm", Toast.LENGTH_SHORT).show() : rssi값을 Toast로 출력