为什么onReadRemoteRssi()回调的值为0?

时间:2013-10-16 09:21:25

标签: android callback bluetooth-lowenergy rssi

我将 mBluetoothGatt.readRemoteRssi(); 放入mGattCallback。

private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
    @Override
    public void onConnectionStateChange(BluetoothGatt gatt, int status,
            int newState) {
        // TODO Auto-generated method stub
        String intentAction;
        if(newState == BluetoothProfile.STATE_CONNECTED) {
            intentAction = ACTION_GATT_CONNECTED;
            mConnectionState = STATE_CONNECTED;
            mBluetoothGatt.readRemoteRssi();
                .
                .
                .

并将 onReadRemoteRssi 放入 BluetoothGattCallback功能

                .
                .
                .
public void onCharacteristicChanged(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic) {
            broadcastUpdate(ACTION_DATA_AVAILABLE, characteristic);
        }

        public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) {
            final Intent rssiIntent = new Intent(BluetoothLeService.this, DeviceControl.class);
            rssiIntent.putExtra(DeviceControl.RSSI, rssi);
        }


        };//BluetoothGattCallback End

它将调用readRemoteRssi()和onReadRemoteRssi(),但我不知道为什么rssi为0 ......

日志看起来像:

D/BluetoothGatt( 3684): readRssi() - device: 90:59:AF:0B:8A:AB
D/BtGatt.GattService( 2463): readRemoteRssi() - address=90:59:AF:0B:8A:AB
                    .
                    .
                    .
D/BtGatt.GattService( 2463): onReadRemoteRssi() - clientIf=4 address=90:59:AF:0B:8A:AB, rssi=0, status=0
D/BluetoothGatt( 3684): onReadRemoteRssi() - Device=90:59:AF:0B:8A:AB rssi=0 status=0

我确信我的BLE设备正常。 但我不知道为什么rssi值是o ??

有人可以教我吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

取决于BT控制器,值0可能意味着RSSI在“黄金接收功率范围”内。如果该值为负,则表示它小于-60 dB,如果该值为正,则大于-40 dB。

对于Bluetopia堆栈中的低级别调用HCI_Read_RSSI(),情况属实。我不确定这是否适用于您的情况。

请参阅此帖子的结尾:http://www.palowireless.com/infotooth/tutorial/radio.asp,其中讨论了RSSI。

尝试增加BLE设备的范围,使RSSI超出黄金范围,并且可能会得到非零值。

答案 1 :(得分:0)

我相信在这种情况下,RSSI量表从-100到0,0是最强的。尝试远离蓝牙设备,看看你是否得到非零数字。