我将 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 ??
有人可以教我吗?
谢谢!
答案 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是最强的。尝试远离蓝牙设备,看看你是否得到非零数字。