首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实时映射应用程序Android

实时映射应用程序Android
EN

Stack Overflow用户
提问于 2013-08-29 09:37:08
回答 3查看 312关注 0票数 0

我需要两个创建一个Android映射应用程序,它将有两种类型的客户端和一个webservice。

客户端类型1(客户端将被跟踪)

需要实时跟踪此客户端的位置并将其发送到服务器。这类客户最多有10-15个。

客户端类型2(客户端查看所有类型1客户端)

这些客户端需要实时显示第1类型客户端的位置(最好小于10-15秒的延迟时间)。对于请求数据的客户,可以有类型为2的100种类型。

Webservice

将返回类型1客户端的最新位置,即每个request.This上的JSON将用PHP编写,mySQL将用于存储客户端类型1的信息。

类型1和类型2的客户端是Android客户端。

除了定期在客户端类型2上定期发布数据和定期在客户端类型1上发布数据之外,实现这一目标的最佳(最有效和最优雅的方法)是什么?

EN

回答 3

Stack Overflow用户

发布于 2013-08-29 09:46:14

我只需要让客户端类型2轮询webservice每xx秒,这取决于您希望它刷新的频率。

您可以使用推送通知,但是由于有大量的客户端类型2,所以您将发送大量通知。

此外,推送通知等内容的目标是在更新速度不可预测且相对罕见的情况下,保持非活动应用程序的更新。例如,对于新闻应用程序,它只对真正的重大新闻使用通知。在“重大新闻”发生之前,可能需要几天的时间,而且你不希望这个应用在非活动状态下不断轮询。

然而,你的应用程序听起来就像它只会在活动的时候工作,并且必须按固定的速度更新。

使用推送通知或套接字不会导致较少的电池使用或其他因素,而只是简单地使用轮询的固定速率,假设以上关于你的应用程序。

票数 1
EN

Stack Overflow用户

发布于 2013-08-29 09:52:25

客户端类型1

查看一下LocationListener类,它将在客户端位置更改时触发事件。

Webservice

在每个位置更新事件上存储一个时间戳,并提供两个服务端点。一个可以提供所有第一类客户的位置。另一个可以提供类型1客户机的所有位置,因为时间戳X。

客户端类型2

在启动时,提取所有Type 1客户端的位置,并为time now()存储时间戳。每隔X秒轮询一次服务,以查找自上一次时间戳以来更改的记录。存储更新的时间戳。

此方法在服务器上稍微困难一些,因为每个Type 2客户端都将请求不同的信息,因此缓存很难,但是服务器只存储10-15个类型1客户机的数据,这应该没有问题。它将减少网络流量,因为没有为未移动的类型1客户端发送数据。

研究长轮询/网络套接字(更高的电池消耗)和推送通知对于一些听起来像是前景应用程序的东西来说似乎有点高。

票数 1
EN

Stack Overflow用户

发布于 2016-03-16 12:11:12

对于那些无意中发现这个问题的人来说:

您还可以使用Java WebSocket在android应用程序和服务器之间进行双向通信。一旦client2 2的位置被更新,您就可以将它推送到服务器,然后使用websocket连接在client1应用程序上更新它。

https://github.com/TooTallNate/Java-WebSocket

iOS:https://github.com/square/SocketRocket

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18507301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档