使用Android GPS检测并连接其他手机

时间:2011-02-04 17:59:59

标签: android

所以昨天我问过类似的问题并且确实收到了我的问题的答案,但是我并不认为我没有正确地问它,因此没有得到我需要的确切信息。

我正在寻找API,一些开源代码,甚至只是其他人在Android上实现这一目标的方式。我正在制作一款需要在指定范围内找到所有其他Android设备的应用。例如,当您打开Android Google地图应用并搜索“餐馆[ZipCode]”时,它会使用从您的邮政编码修改的半径并查找所有这些地点。 GPS获取您的位置,地图使用该信息查找地址附近的餐馆。

相反,我希望能够使用GPS查找我的位置(现在可以轻松找到),但不是在地图上找到的东西(已经内置),我希望能够找到其他支持GPS的Android手机。我得知他们必须同时播放他们的GPS信号(因为他们没有像餐馆那样将数据存储在某种中央数据库中)。但是,我不只是想找到这些手机,我想从这些手机发送/接收数据(显然具有正确的权限)。

现在,我发现了像Bump API这样的东西。但是,BUMP使用手机传感器来激发这种搜索。所以基本上,如果你用另一个“碰撞”你的手机并让应用程序运行,它就会继续使用GPS来找到你碰到的另一部手机的位置并在它们之间交换数据。这就像我想要做的那样,但是在他们的API中,他们没有提供只是说“嘿,给我一英里之外的所有手机。”的功能。

我还发现API可以完全满足我的需要,但它们必须位于相同的蓝牙范围或相同的Wi-Fi网络上,这根本不适合我的需要。

你们知道任何能够完全符合我所需要的东西吗?或者可以修改Bump API(如果你已经完成),不必使用手机传感器直接通过GPS为你周围的手机查找手机信息?或者有什么东西存在于3g / 4g网络而不是只有Wi-Fi /蓝牙?

谢谢你们。

7 个答案:

答案 0 :(得分:5)

  

不是经常将位置发布到外部服务器,GPS是否能够实现在非常特定的时间播放GPS信号并从中发送/接收数据的其他内容?

“播放GPS信号”的唯一内容是卫星。

  

我们希望在不使用外部服务器的情况下实现这一目标。

您无从使用外部服务器,无论您是否喜欢,都可以用于发现和以后的通信。

  

你们知道任何能够完全符合我所需要的东西吗?

FoursquareGoogle LatitudeYahoo Fire Eagle等等。

答案 1 :(得分:2)

要通过GPS执行此操作,您必须经常将所有手机的位置发布到网络服务器,然后通知他们附近的其他人。

毋庸置疑,这只是选择加入!

它可能会对电池寿命产生负面影响,除非您不经常更新,这可能会限制其可用性。

对两部手机采取明确的触发操作的好处是,他们只需要查询GPS并通知服务器在触发时按位置找到对方。

答案 2 :(得分:1)

您可能需要编写自己的应用程序 - 然后您可以执行此服务器端并推送内容。如果您正在尝试将数据推送到随机Android手机 - 那你就不走运了。大多数人都不会想要这个,并且可能不会拥有接收和理解它所需的应用程序。使用蓝牙网络,您需要授权,并且大多数安卓都无法通过蓝牙开箱即可传输随机数据(尽管您当然可以获得软件)。

老实说,恶意软件和跟踪是真正无法实现的原因,但即使它们不存在,您仍然需要接收设备上的应用程序才能了解您发送的内容。如果你的传播范围很广,你可能想把它发送到服务器来传播(至少对于传输电话的带宽成本)。

答案 3 :(得分:1)

开发Android应用登录的服务器应用程序。每次手机移动到当前距离时发送GPS位置。向服务器发送查询请求以询问是否有其他电话在范围内,或让服务器通知电话范围内的新设备。

您可能遇到服务器可伸缩性问题,因此需要考虑一些事情。 此外,这将是一个很大的电池耗尽,因此您的用户可能不会太热衷于运行它,更不用说隐私元素了。

答案 4 :(得分:1)

您需要重新考虑您尝试做的事情。 Android设备不会传输"任何GPS信号,它们只是接收器,来自卫星的信号。因此手机可以轻松获得自己的位置,但其他设备的位置是非常非常私密的信息。要访问其他手机的位置,您需要与他们在同一个网络上(蓝牙,wifi),或者您需要使用基于服务器的服务来发送位置,例如Google Latitude。

我不太可能注册这样的服务。我的位置非常私密,我与一些人分享,但我似乎无法公开分享它与应用程序,没有非常非常好的理由。

在我看来,您需要构建一个基于服务器的应用程序,例如在Google App Engine上,让人们注册并同意将他们的位置发送到该服务器,以便运行您应用的其他手机可以从中央商店访问该信息。

答案 5 :(得分:1)

现在的问题有一个非常简单的解决方案。您所要做的就是设置 Geofence 并监控它以进入和退出用户。地理围栏允许您选择地理位置并在其周围设置所需半径的圆。当有人进入或离开该位置时,您可以收到通知并执行所需的操作。

有关如何在Android中使用此功能的详细信息,请访问此link

答案 6 :(得分:0)

其他人关于无法从其他手机接收信号的所有评论都是正确的。然而,在基于网络的位置服务中存在完全不同的替代系统。这是一个模型,您可以向运营商网络询问手机的位置,运营商网络需要跟踪其在美国的增强型911服务(我不知道这在其他领域的部署程度如何,以及有多少不同您需要用来覆盖其他领域的服务。)

然而,这可能是一条非常昂贵的路线。它不仅会自动适用于所有手机,我相信用户必须选择与您的服务共享位置。这就是Loopt等服务最初设置其位置信息的方式,以便可以被动地收集而不会对手机电池寿命产生负面影响。有一些第三方服务可用于跨运营商服务,例如Location Labs:

http://locationlabs.com/

除了像Skyhook Wireless这样的第三方定位服务,他们可能能够为您提供某种类型的信息(虽然我不认为您正在寻找的是他们现有API的地图)