如何获取已连接蓝牙设备的 rssi 值

Posted

技术标签:

【中文标题】如何获取已连接蓝牙设备的 rssi 值【英文标题】:How to get rssi value of a connected Bluetooth device 【发布时间】:2020-07-16 22:29:28 【问题描述】:

我正在尝试在我的 android 程序中获取已连接蓝牙设备的 rssi 值。 下面是代码:

gatt = mDevice.connectGatt(getApplicationContext(), false, new BluetoothGattCallback() 
    @Override
    public void onReadRemoteRssi(BluetoothGatt gatt, int rssi, int status) 
        super.onReadRemoteRssi(gatt, rssi, status);
        Log.d(TAG, "rssi is : " + rssi);
        ((TextView) findViewById(R.id.rssiValue)).setText(rssi);
    
);
gatt.readRemoteRssi();

但是方法 onReadRemoteRssi 没有返回任何值。 请帮我解决这个问题。

【问题讨论】:

请检查您的设备是否已连接? 【参考方案1】:
if(ContextCompat.checkSelfPermission(RSSI.this,Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) 
   ActivityCompat.requestPermissions(
     RSSI.this, 
     new String[]  
       Manifest.permission.BLUETOOTH,
       Manifest.permission.BLUETOOTH_ADMIN,
       Manifest.permission.ACCESS_FINE_LOCATION
     ,
     1
   );

    确保从 BlueetoothAdapter 检索到的 mDevice 变量不为空 最后确保设置了权限,上面的代码将为您提供获取蓝牙绑定设备所需的权限。

【讨论】:

以上是关于如何获取已连接蓝牙设备的 rssi 值的主要内容,如果未能解决你的问题,请参考以下文章

android蓝牙:在多个连接的设备上读取远程RSSI

从 Windows 上的 RSSI 检测蓝牙信号强度

如何以编程方式判断蓝牙设备是不是已连接?

蓝牙抽象设备 ping

获取已连接的蓝牙 LE 设备列表

android 获取蓝牙已连接设备