当两个用户/朋友彼此靠近时发出警报 - 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的主要内容,如果未能解决你的问题,请参考以下文章