2011-02-04 67 views
8

于是我问类似的东西昨天确实收到了一个回答我的问题,但我不认为我真的问它正确,因此没有得到我所需要的准确信息不。使用Android的GPS检测并与其他手机连接

我在寻找一个API,一些开源代码,甚至只是一种方式,别人已经在Android取得这样的。我正在制作一个应用程序,需要查找指定半径内的所有其他Android设备。例如,当您打开Android谷歌地图应用程序,并搜索“Restaurants [ZipCode]”时,它将使用从您的邮政编码修改的半径并查找所有这些地方。 GPS可以获取您的位置,而且地图会使用该信息查找地点附近的地址内的餐馆。我想能够使用GPS找到我的位置(因为它现在可以很容易地),但不是在地图上找到东西(已经内置),而是希望能够找到我的位置其他支持GPS的Android手机。我知道他们必须同时播放他们的GPS信号(因为他们没有像餐馆那样将数据存储在某种中央数据库中)。然而,我不只是想找到这些手机,我想发送/接收这些手机的数据(显然具有正确的权限)。

现在,我找到了像Bump API这样的东西。但是,BUMP使用手机传感器来触发此搜索。因此,基本上,如果您将手机与另一手机“碰撞”并让应用程序运行,则会继续,然后使用GPS查找刚碰到的另一手机的位置并在它们之间交换数据。这就像我想在他们的API中做的事情一样,他们没有提供这样的功能,只是说:“嘿,给我所有距离我一英里以内的手机。”

我还发现API的,可以做正是我需要的,但他们必须在同一个蓝牙范围或相同的Wi-Fi网络,这不适合我需要在所有的。

你们知道任何能满足我需要的东西吗?或者可以修改Bump API(如果你已经这样做了),不必使用手机传感器并直接通过GPS为您周围的手机查找手机信息?或者是否存在超过3g/4g网络而不是仅存在Wi-Fi /蓝牙?

谢谢你们。

+0

嗨,你发布这个问题已经有一段时间了,但是我发现这很有趣,并且会帮助我完成一个我正在做的项目 - 你在这里找到了什么有用的东西吗?诸如“列出距离该地点一英里内的所有电话”?谢谢 – 2016-10-14 07:14:35

+0

@DrConfuse请阅读我的回答 – chinmish 2017-07-10 12:42:33

回答

2

要通过GPS做到这一点,你就必须有所有的手机频繁发布他们的位置到网络服务器上,然后可以告知他人附近。

不用说,这将只能选择!

而且这可能对电池寿命的负面影响,除非你把它很少更新,这可能会限制其可用性。

有一个明确的触发动作两部手机的优点是,他们只需要查询GPS和通知服务器的位置找到对方时,他们俩都被触发。

+0

我其实只想在特定的时间执行查询,这是由用户的操作触发的。但是,我不希望这个行为是一个“颠簸”。我希望它能成为用户即使靠近其他人也能做的事情。 GPS不能在特定的时间发布GPS信号并且发送/接收数据,而不是经常向外部服务器发布位置信息? – slandau 2011-02-04 18:08:55

+3

GPS接收器是被动的,他们不传输任何东西。因此,您想要查找的设备最近需要通过移动网络更新其位置的服务器,以使其仍然大致位于最后所说的位置,或者需要同时触发两个设备才能更新服务器并让它匹配起来。 – 2011-02-04 18:16:12

+0

除非他们在一个Wi-Fi /蓝牙网络上一起正确吗?嗯,好吧,所以我想这不可能没有你说的外部服务器? – slandau 2011-02-04 18:17:52

1

你可能不得不编写你自己的应用程序 - 然后你可以做这个服务器端和推动的东西。如果您试图将数据推送到随机Android手机 - 那么您运气不好。大多数人不想要这个,并且可能不会有必要的应用程序来接收和理解它。对于蓝牙网络,您需要授权,大多数Android无法通过蓝牙传输随机数据(尽管您肯定可以通过软件来实现)。

老实说,恶意软件和跟踪的原因有这真的是不可能的,但即使他们没有,你仍然需要对理解你送他们什么接收设备的应用程序。如果你广泛传播,你可能会想要发送到服务器传播(至少为传输电话的带宽成本)。

1

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

您可能会遇到服务器的扩展性问题,因此多数民众赞成一些思考。此外,这将是一个巨大的电池消耗,所以你的用户可能不会太热衷于运行它,更不用说隐私元素。

1

你需要重新思考你想要做的事情。 Android设备不“传输”任何GPS信号,它们只是接收器,来自卫星的信号。所以手机可以很容易地获得自己的位置,但其他设备的位置是非常非常私人的信息。要访问其他手机的位置,您需要与他们位于同一网络(蓝牙,无线网络),或者您需要他们使用基于服务器的服务来发送位置信息,例如Google Latitude。

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

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

5

GPS不能实现在特定时间广播GPS信号并从它们发送/接收数据的其他事情,而不是经常向外部服务器发布位置?

唯一的事情是“广播GPS信号”是卫星。

我们希望在不使用外部服务器的情况下完成此操作。

您别无选择,只能使用外部服务器,无论您是否喜欢它,无论是用于发现还是以后的通信。

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

FoursquareGoogle LatitudeYahoo Fire Eagle等等。

0

其他人关于不能接收来自其他手机的信号的所有评论都是正确的。然而,在基于网络的定位服务中存在完全不同的替代系统。这是一种模式,您可以向运营商网络询问手机的位置,运营商网络需要跟踪美国的增强型911服务(我不了解其在其他地区的广泛部署情况以及有多少不同您需要用来覆盖其他区域的服务)。

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

http://locationlabs.com/

除了第三方定位服务,如Skyhook Wireless公司,谁可能是能够让你的一些信息排序(虽然我不认为你在找什么地图到他们现有的API)

1

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

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