2014-10-08 87 views

回答

5

最後花了幾個小時思考之後,我想到了一個更好的辦法來做到這一點:

  1. 安裝在你的服務器,讓用戶表和位置表,有一個數據庫(MySQL和SQL等)位置數據

  2. 在Android中創建一個服務,它將在15分鐘內觸發一次請求當前位置。

  3. 創建SharedPreference/SQliteDB,其中包含也更新到服務器數據庫的設備的最後座標。

    3.1 If當前位置x距離內從SharedPreference and/or當前位置檢索到的最後位置匹配(取決於你給多少x30英尺以上)
    then用戶是在同一個地方所以不要上傳座標到服務器數據庫

    3.2。 If用戶不在臨近範圍內or上一個位置與當前位置不匹配
    then上傳座標到服務器數據庫。

  4. 座標上傳到服務器後,更新SharedPreference太...

  5. 上傳座標後,服務器必須返回從它的數據庫是你距離內誰的用戶詳細信息。然後,您的應用程序會知道您附近的人,並向您發送通知,告知您「您的朋友XXX在附近!」

  6. 在服務器中,上傳座標後,服務器還會通過Google Cloud Messaging向您附近的用戶發送通知。

提示:運行在服務器cron作業將執行每分鐘,並檢查「誰靠近誰」,並通知他們。

希望它可以幫助別人:)

-2
  1. 在設備上查詢您自己的位置槽android位置api。
  2. 上的設備將結果發送給你的朋友
  3. 在B設備接收設備的位置
  4. 在B設備發送設備B的位置給設備A.
  5. 計算A和B.顯示器之間的距離如果距離要求得到滿足,通知。

有很多方法如何做到這一點。

+0

不滿意! 1st)UserA的設備如何不斷更新自己的位置到服務器或UserB?它會使果汁乾涸 2nd)將UserA的位置信息發送到UserB和UserC可以使用? – 2014-10-09 07:10:40

1

這是太簡單了。只需將您的移動位置發送到數據庫,並在搜索附近用戶時使用此查詢:

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

我希望這會幫助你。