我尝试过搜索但没有找到任何信息。
我的问题是:在安卓中,如何使用地理围栏或其他方法警报2个或更多用户,如果他们彼此靠近?
比如,如果UserA在足球场上,而UserB在足球场附近行走。那么,UserA和UserB会自动收到通知,告诉他们彼此靠近。
经过几个小时的思考,我想到了更好的方法:
在您的服务器上设置一个数据库(MySQL、SQL等),其中包含用户表和位置表,其中包含位置数据
在Android中创建一个服务,每15分钟触发一次请求当前位置。
创建SharedPreference / SQliteDB,保存设备的最后坐标,这些坐标也更新到服务器数据库中。
3.1 如果
当前位置与从SharedPreference检索到的上次位置匹配或者
当前位置在x
的接近度内(取决于您给出的接近度有多少,30英尺或更多)
那么
用户在同一个地方所以不要将坐标上传到服务器数据库。
3.2. 否则
,如果用户不在接近度范围内或者
上次位置与当前位置不匹配 那么
将坐标上传到服务器数据库。
上传坐标到服务器后,也要更新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/
希望这能帮到你。
有很多方法可以实现它。