Android设备中的实时数据通信

时间:2013-10-18 07:41:29

标签: android performance google-maps-android-api-2

基本上我想在GPS的帮助下使用谷歌地图跟踪另一台设备。 你能否就我如何有效地做到这一点给我一些建议?

我的想法是:我将在远程数据库中编写我想要跟踪的设备的经度和纬度。而另一个将每5秒获取一次数据。

效率这么高吗?或者还有其他方法可以将坐标直接发送到其他设备?

谢谢!

3 个答案:

答案 0 :(得分:3)

选择取决于为位置提交选择的时间间隔及其从其他客户端进行的轮询。

如果它每3分钟(逼真的感觉)或更多。我想正常的http提交到您的远程服务器并使用http获取相同的功能可以做到这一点。这将是您想要实现的超级简单的实现。

但是,如果你正在寻找像即时消息这样的实时事物。你必须去 xmpp连接。 openfire服务器实现和smack库可能对你有所帮助。

这是链接。

从这里下载服务器

http://www.igniterealtime.org/projects/openfire/

从这里检查客户端代码

http://developer.samsung.com/android/technical-docs/Building-a-Chat-Application

将google凭据替换为分别创建一个和ip和端口的本地openfire服务器。

仅限以上两种。我在几乎3个小时内按照上面的内容创建了一个简单的android聊天应用程序和服务器。来吧,亲自尝试。

希望有所帮助

答案 1 :(得分:1)

我建议设置位置变化监听器以对最小距离作出反应,而不仅仅是在时间间隔上。发布客户端可能是静态的一段时间,获取GPS并发送它是浪费cpu时间,带宽和电池。

此外,5秒可以是短时间。它可以快速耗尽电池并消耗带宽。

如果您确定必须在应用程序启动时始终跟踪客户端,那么定期发布即可。如果接收电话不时需要该位置,那么拉取请求会更经济(即他应该从另一部电话请求该位置)。

最后,这可能很方便: http://googlecloudplatform.blogspot.com/2013/06/get-your-mobile-application-in-the-cloud-with-mobile-backend-starter.html。这个例子实际上是你正在构建的,不一样的。

P.S 无法将数据“直接”发送到另一部电话(除非它始终连接到具有公共IP地址和保留的本地IP的同一热点,但99%的情况并非如此)。这意味着您应该使用Google Cloud Messaging或类似的实施。

答案 2 :(得分:0)

我认为最好使用push notification,服务器通过http查询发送到设备命令“给我你的位置”和设备应答服务器,也可以轻松地将获取数据从5秒改为30,例如。