api 설명을 참조해서, 연결된 ble기기의 수신세기를 출력하는 코드를 짜고 있습니다.
BluetoothGattCallback 내부에서 다음과 같이 처리했습니다.
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
String intentAction;
if (newState == BluetoothProfile.STATE_CONNECTED)
{
intentAction = ACTION_GATT_CONNECTED;
mConnectionState = STATE_CONNECTED;
mBluetoothGatt.readRemoteRssi();
broadcastUpdate(intentAction);
} else if (newState == BluetoothProfile.STATE_DISCONNECTED)
{
//연결 끊어짐 - 생략
state상태가 connect로 처리되면 mBluetoothGatt.readRemoteRssi();로
onReadRemoteRssi 메서드를 호출합니다.
@Override
public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status)
{
Log.e("1:::::::::::::rssi::::::::",rssi+"");
mBluetoothGatt.readRemoteRssi();//true
super.onReadRemoteRssi(gatt, rssi, status);
}
한번 onReadRemoteRssi를 호출하면 ,또 다시 호출해주기 위해[계속]
내부에서도 readRemoteRssi()를 넣었습니다.
두개의 폰으로 테스트 했을 때.. 잘될 때는 호출이 잘 되어 rssi값이 갱신되서 log로 출력되는데,
어쩔 땐 readRemoteRssi가 동작되지 않습니다..
readRemoteRssi값이 true면, 정상적으로 rssi값을 받을 수있다는 걸로 알고있는데..
혹시 몰라 boolean 변수로 확인해보니 이것도 true구요..
구글에 검색을해도 ㅇ제가 쓴 예제 코드만이 전부인지라;; 혹시 이런 현상을 겪으신 분이나 아시는 분이 있으신지...질문글 올려봅니다.