如何在 android 应用程序中获取附近用户的列表?

Posted

技术标签:

【中文标题】如何在 android 应用程序中获取附近用户的列表?【英文标题】:how do i get a list of nearby users in an android application? 【发布时间】:2015-07-08 22:52:31 【问题描述】:

我正在构建一个应用程序,它的 UI 可以获取附近用户的列表,以帮助将志同道合、兴趣相近的人联系起来。我知道这不是一个新概念,像 Grindr 这样的应用程序正是我想要实现的目标。如何从手机获取应用程序的配置文件信息并将其显示在运行相同应用程序的另一部手机上?这需要网络服务器吗?

为了说明用户会看到什么:用户 A 写了他们的角色简历并显示了艺术作品,用户 B 就在附近,并在主页网格视图上看到了用户 A。

用户 B 如何将这些信息发送到他的手机?这样做的最佳实践是什么?

我已经看过并且找不到已发布的解决方案,但如果这已经在其他地方得到回答,我会很感激链接,所以我不会为重复的问题做出贡献。我是新手,需要一些指导,因为我开始更深入地研究 android 编程,这是一个我似乎一直在思考的问题。

【问题讨论】:

【参考方案1】:

您需要让所有用户每隔几分钟通过网络服务将他们当前的位置上传给您。将其存储在数据库中(使用 UPSERT)。然后,当用户想要查找附近的其他用户时,您可以在数据库中搜索该范围内的所有用户并返回该列表。使用支持 GIS 的数据库(例如带有 PostGis 扩展的 Postgres)会有所帮助,但这不是必需的。

在数据库中加上位置的时间戳可能是个好主意,这样您就可以消除太旧的结果。

【讨论】:

您需要在系统的某个位置保存他们的个人资料照片。当您向他们发送用户列表时,您会向他们发送一些关于用户名、id 的元数据(我假设他们在您的系统中都有一个 id)等。这些数据之一就是 URL他们的照片。 这听起来是个不错的计划。感谢您的指导和帮助。【参考方案2】:

出于隐私考虑,我还建议您的服务器不得返回其他用户的确切位置。如果您想显示距离,请让服务器返回一个故意随机不准确的值,以防止用户对其他人的位置进行精确的三角测量。

【讨论】:

我打算这样做,感谢您的关注。【参考方案3】:

如果您尝试进行小距离并且不想在服务器上存储数据,您可以使用 wifi-direct 在用户之间传输数据...但是它可能会耗尽用户电池..为避免这种情况,您可以使用蓝牙低功耗用于初始检测,然后 wifi-direct 进行通信...

【讨论】:

【参考方案4】:

Google 刚刚发布了新的Nearby API,它完全可以满足您的需求。它已包含在Google Play services 7.8 中。 Here你可以从谷歌的博客中找到一个详细的博客条目,他们在那里详细解释,here你有参考页面。

我正在调查你是否可以配置搜索距离。

【讨论】:

您知道使用 DISTANCE_TYPE_DEFAULT 的距离大概有多远吗?这是最长距离的最佳策略吗?

以上是关于如何在 android 应用程序中获取附近用户的列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用firebase作为数据库在android中获取附近的用户名?

谷歌地图查找当前位置和附近的地方

附近设备中的应用程序通信,无需用户干预

如何获取附近的用户和距离?

如何从 Amplify - AppSync - ElasticSearch - DynamoDB Stack 中获取看不见的附近文档?

Android附近基站+Wifi+IP+GPS多渠道定位方案