读取 Android 手机的实际 txPower

Reading actual txPower of Android mobile

可以找到实际的 ble

txPower

个 android 台设备。因此,我可以在 Beacon 构建器对象下方使用它而不是 -59 作为 txPower。

Beacon beacon = new Beacon.Builder()
    .setId1("2f234454-cf6d-4a0f-adf2-f4911ba9ffa6")
    .setId2("1")
    .setId3("2")
    .setManufacturer(0x0118)
    .setTxPower(-59)
    .setDataFields(Arrays.asList(new Long[] {0l}))
    .build();

我的用例是读取两个 android ble 设备之间的距离。

txPower 字段应该是 1 米处以 dBm 为单位的预期信号强度。每个 Android phone 型号的 BLE 发射器输出功率略有不同,通常在 1 米处测量为 -50 dBm 至 -70 dBm。

不幸的是,除非您自己测量,否则没有好的方法来获得用于特定 Android 设备型号的正确值。 Android 有没有内置 API 来获取此信息,而且我从未见过 phone 制造商发布的任何规范。

随着团队开发接触者追踪应用程序,人们对这个主题重新产生了兴趣。实际上,上周末我去野外测量了手边许多设备的发射器输出功率。例如,Google Pixel 3a,我测得 -60 dBm。

如果您想进行自己的测量以帮助完成这项工作,我建议执行以下步骤:

  1. 前往远离任何障碍物(尤其是金属障碍物)数米的空旷区域。
  2. 将非金属物体上的 phone 发射器抬高,离地至少一米。 phone 应该放在最后,以便屏幕与地面垂直。 (我用了相机三脚架。)
  3. 运行 一个在三脚架上 phone 上全功率发射信标的应用程序。
  4. 将参考 phone(最好是 iPhone SE 1st Generation 或旧的 iPhone 4-5s)放在一米远的地方,这样两个屏幕都朝向相同的方向。
  5. Locate Beacon 等信标应用程序中执行 "calibration" 以获得约 30 秒内的平均 RSSI。
  6. 如果用于测量的 phone 不是上述参考型号之一,您需要调整 phone 的接收器灵敏度。我分享的电子表格有一个示例,说明如何为测量 iPhone SE 的 Pixel 3a 执行此操作。这部分可能很棘手,因为您需要另一个 phone 具有已知的灵敏度或发射器功率输出。

这是我的计算电子表格:https://docs.google.com/spreadsheets/d/1-voNJAeHz78AarZmfds8WiplNhUDzeYrsW0YzKfrExU/edit?usp=sharing

我还写了一篇 blog post,其中涉及缺乏良好数据集的问题,并告诉您比您想知道的更多有关信标测距的信息。