我正在开发一个用于室内定位的 android 应用程序,我已经将 wifi 指纹存储在包含以下列的表tbl_rssi中:
- _id(每个指纹的 id - 这也是 tbl_reference_points._id 的 FK)
- MAC(可以在每个指纹中读取的接入点的 MAC 地址)
- 信号(每个接入点的信号)
我还有另一个表tbl_reference_points包含:
- _id(20 个参考点中的每一个的 PK)。
- floorNum(建筑物内)
- buildingNum(建筑物数量)
在处理我的数据库之前:
我声明 WifiManager 并使用 startScan() 读取每个预定参考点中的接入点及其信号。
我将扫描结果存储在
List<ScanResult>
.
假设我为 tbl_rssi 中的 20 个参考点 () 中的每一个存储了 10 个 mac 地址。要确定用户的位置(即他所在的 20 个参考点之一),我需要执行以下步骤:
- 检索与我从 ScanResults 列表中获得的具有相同 mac 地址的记录。在这里,我想应该创建一个动态查询。
- 对于所有 20 个参考点,找到预存信号与我们在上一步中的每条记录的列表中读取的信号之间的差异。
- 分别计算每个差异的平方。
- 对于 20 个参考点中的每一个,应计算(差的平方)的总和。
- 找到最小的数字,这是所需的参考点。
我相信我需要创建一个动态 SQL 查询,我可以在第一步中做到这一点。但是我需要帮助来完成后续步骤中的计算,因为我是 SQL 查询的新手。提前致谢