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

4
我尝试过搜索但没有找到任何信息。 我的问题是:在安卓中,如何使用地理围栏或其他方法警报2个或更多用户,如果他们彼此靠近? 比如,如果UserA在足球场上,而UserB在足球场附近行走。那么,UserA和UserB会自动收到通知,告诉他们彼此靠近。
3个回答

5

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

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

  2. 在Android中创建一个服务,每15分钟触发一次请求当前位置。

  3. 创建SharedPreference / SQliteDB,保存设备的最后坐标,这些坐标也更新到服务器数据库中。

    3.1 如果当前位置与从SharedPreference检索到的上次位置匹配或者当前位置在x的接近度内(取决于您给出的接近度有多少,30英尺或更多)
    那么用户在同一个地方所以不要将坐标上传到服务器数据库

    3.2. 否则,如果用户不在接近度范围内或者上次位置与当前位置不匹配
    那么将坐标上传到服务器数据库。

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

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

  6. 在服务器上,上传您的坐标后,服务器还将使用Google Cloud Messaging向靠近您的用户发送通知。

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

希望对某些人有所帮助 :)


3

这个很简单。只需将您的手机位置发送到数据库,并在搜索附近用户时使用此查询:

$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/

希望这能帮到你。


-2
  1. 在设备上通过Android位置API查询自己的位置。
  2. 在设备上将结果发送给您的朋友。
  3. 在B设备上接收A设备的位置。
  4. 在B设备上将B设备的位置发送给A设备。
  5. 计算A和B之间的距离。如果满足距离要求,则显示通知。

有很多方法可以实现它。


1st) 用户A的设备为什么要不断向服务器或用户B更新自己的位置?这会耗尽电量。 2nd) 将用户A的位置信息发送给用户B和用户C可以使用哪种方法? - Rafique Mohammed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接