当两个用户/朋友彼此靠近时发出警报 - Android Proximity

Posted

技术标签:

【中文标题】当两个用户/朋友彼此靠近时发出警报 - Android Proximity【英文标题】:Alert when two users/friends are near to each other - Android Proximity 【发布时间】:2014-12-03 05:16:03 【问题描述】:

我尝试搜索,但找不到任何东西。 我的问题是“如果 2 个或更多用户彼此靠近,我如何提醒他们?”在 android 中使用地理围栏或其他方式。

假设,如果用户 A 在足球场中,而用户 B 在该足球场附近行走。然后 UserA 和 UserB 会自动收到 UserA/UserB 在附近某处的通知。

【问题讨论】:

【参考方案1】:

经过几个小时的思考,我终于想到了一个更好的方法:

    在您的服务器中设置一个数据库(mysql、SQL 等),其中包含包含位置数据的用户表和位置表

    在 Android 中创建一个服务,该服务将在 15 分钟内触发一次,请求当前位置。

    创建 SharedPreference / SQliteDB,它保存了设备的最后一个坐标,该坐标也更新到了服务器数据库。

    3.1 If 当前位置与从 SharedPreference and/or 当前位置在x 邻近范围内检索到的最后位置匹配(取决于您给x 30 英尺或更多) then 用户在同一个地方所以不要将坐标上传到服务器数据库

    3.2。 If 用户不在附近 or 最后位置与当前位置不匹配 then 将坐标上传到服务器数据库。

    将坐标上传到服务器后,也要更新 SharedPreference...

    上传坐标后,服务器必须从其数据库中返回您附近的用户详细信息。然后,您的应用会知道谁在您附近并向您发送通知,说“您的好友 XXX 就在附近!”

    在服务器中,上传您的坐标后,服务器还会使用 Google Cloud Messaging 向您附近的用户发送通知。

提示:在您的服务器中运行一个 cron 作业,该作业将每分钟执行一次并检查“谁靠近谁”并向他们发送通知。

希望它可以帮助某人:)

【讨论】:

【参考方案2】:

太简单了。只需将您的移动位置发送到数据库并在搜索附近用户时使用此查询:

$query = "select * from 
    (SELECT name,latitude,longitude,round((((acos(sin((".$latitude."*pi()/180)) * 
    sin((`latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * 
    cos(((".$longitude."- `longitude`)*pi()/180))))*180/pi())*60*1.1515*1.609344),1) as distance
FROM location) as temp order by distance";

有关更多信息,我已经发了一个帖子。

http://www.freebieslearning.info/android-2/android-find-nearby-user/

希望对你有帮助。

【讨论】:

【参考方案3】:
    在设备上通过 android location api 查询您自己的位置。 在设备上将结果发送给您的朋友 在 B 设备上接收设备 A 位置 在 B 设备上将设备 B 位置发送到设备 A。 计算 A 和 B 之间的距离。如果满足距离要求,则显示通知。

有很多方法可以做到这一点。

【讨论】:

不满意! 1st)为什么UserA的设备不断更新自己的位置到服务器或UserB?它会使果汁干涸 2)将 UserA 的位置信息发送给 UserB 和 UserC 可以使用吗?

以上是关于当两个用户/朋友彼此靠近时发出警报 - Android Proximity的主要内容,如果未能解决你的问题,请参考以下文章

当餐厅彼此靠近时,地图看起来人满为患

当它们彼此靠近时对点进行分组

在 C# 中的窗口窗体应用程序中关闭窗口时发出警报 [重复]

如何检查两个 SKSpriteNode 是不是彼此靠近?

当对象靠近opencv时将帧保存到文件中

JavaFX - 未填充文本区域时发出警报