【发布时间】:2014-12-03 05:16:03
【问题描述】:
我尝试搜索,但找不到任何东西。 我的问题是“如果 2 个或更多用户彼此靠近,我如何提醒他们?”在 android 中使用地理围栏或其他方式。
假设,如果用户 A 在足球场中,而用户 B 在该足球场附近行走。然后 UserA 和 UserB 会自动收到 UserA/UserB 在附近某处的通知。
【问题讨论】:
标签: android geolocation location proximity geofencing
我尝试搜索,但找不到任何东西。 我的问题是“如果 2 个或更多用户彼此靠近,我如何提醒他们?”在 android 中使用地理围栏或其他方式。
假设,如果用户 A 在足球场中,而用户 B 在该足球场附近行走。然后 UserA 和 UserB 会自动收到 UserA/UserB 在附近某处的通知。
【问题讨论】:
标签: android geolocation location proximity geofencing
经过几个小时的思考,我终于想到了一个更好的方法:
在您的服务器中设置一个数据库(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 作业,该作业将每分钟执行一次并检查“谁靠近谁”并向他们发送通知。
希望它可以帮助某人:)
【讨论】:
太简单了。只需将您的移动位置发送到数据库并在搜索附近用户时使用此查询:
$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/
希望对你有帮助。
【讨论】:
有很多方法可以做到这一点。
【讨论】: