gpt4 book ai didi

android查找任何ble设备的距离

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:26 25 4
gpt4 key购买 nike

我必须计算任何 ble 设备(不仅仅是信标)的距离。我正在使用 devloper android 网站上提供的 BluetoothLeGatt 示例应用程序,这是链接 http://developer.android.com/downloads/samples/BluetoothLeGatt.zip .我正在用这种方法打印日志

// Device scan callback.
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {

@Override
public void onLeScan(final BluetoothDevice device, int rssi, final byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
mLeDeviceListAdapter.addDevice(device);
mLeDeviceListAdapter.notifyDataSetChanged();

Log.e("scanrecord", Arrays.toString(scanRecord));
}
});
}
};

这是我的日志

05-05 13:58:35.811 8034-8051/com.example.android.bluetoothlegatt D/BluetoothLeScanner: onScanResult() - ScanResult{mDevice=08:7C:BE:49:7D:9E, mScanRecord=ScanRecord [mAdvertiseFlags=6, mServiceUuids=[0000fee8-0000-1000-8000-00805f9b34fb, 0000fff0-0000-1000-8000-00805f9b34fb], mManufacturerSpecificData={}, mServiceData={}, mTxPowerLevel=-2147483648, mDeviceName=Safety15HA006634], mRssi=-80, mTimestampNanos=2601215802991397}
05-05 13:58:35.816 8034-8034/com.example.android.bluetoothlegatt E/scanrecord: [2, 1, 6, 17, 8, 83, 97, 102, 101, 116, 121, 49, 53, 72, 65, 48, 48, 54, 54, 51, 52, 5, 3, -24, -2, -16, -1, 5, 18, 6, 0, -128, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].

在搜索时,我在这个链接 Understanding ibeacon distancing 上找到了计算距离的公式.我的问题是如何从 scanRecord 获取传输功率。还有什么是 mTxPowerLevel 以及如何获取它,因为这是从 android ble 类记录的。

最佳答案

您无法从扫描记录中获取 RSSI,因为该记录是由信标计算的,它显然无法提前知道您将以何种强度接收传输。幸运的是,rssi 参数为您提供了 RSSI。

This answer to a related question解释了如何获得传输功率,但请注意并非所有设备都会提供其传输功率。我链接的答案解释说 iBeacons 特别使用非标准制造商数据来提供它,而大多数通用 BLE 外围设备根本不包含它,因为它除了测距外没有任何用处。您在日志中显示的是一个不提供传输功率的设备示例:mTxPowerLevel 在这种情况下显示为最负的 int .

如果您的外围设备在广告中没有包含其发射功率,则您只需根据 RSSI 进行计算,并针对外围设备进行校准。也就是说,您必须在实验室中使用该型号的外设测量在 1 米处获得的 RSSI,并将该信息包含在您的应用中,以了解您希望它使用的所有外设。

最后,值得注意的是,您不会使用此方法获得非常准确的范围。 RSSI 随 radio 环境变化很大。以不同的方式握住手机,或者将您的 body 放在手机和外围设备之间,都会影响 RSSI。站在手机和外围设备之间通常会产生与 5-10 米距离相同的效果。

关于android查找任何ble设备的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37046962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com