0

我已经实现了一个带有一些运动检测器和温度传感器的家庭监控系统,它连接到作为服务器的迷你 PC。在这台 PC 上,我有一个 .NET ASMX Web 服务,它有一些方法,返回探测器的情况和环境温度。

为了实现设备情况,我正在尝试构建一个可以通过 Wifi 连接到 Web 服务并显示温度的 Android 应用程序。当温度超过临界范围或运动检测器检测到运动时,此应用程序必须显示相关通知。

这里的问题是:每次需要系统情况,我都要查询web服务。但这样我必须每隔一秒查询一次网络服务,以了解温度是否超过临界范围,以及探测器是否检测到运动。问题:有没有更好的解决方案来实现这一目标?或者有什么方法可以让 Web 服务在事件发生时通知客户端?

请注意,我在我的 android 应用程序中使用 KSOAP2 库。

提前致谢

4

2 回答 2

1

您需要考虑使用推送通知模式而不是轮询服务器来检查新数据。

这里有几个选项。最简单和最标准的方法是查看 Google 的推送通知系统,称为 Google Cloud Messaging (GCM) 请注意,这仅适用于具有 Google 服务的设备(因此,例如,如果您使用的是 Kindle Fire,您可以不要使用它)

或者您可以考虑基于 MQTT 协议的更定制版本的推送通知。您需要设置自己的 MQTT 服务器,并拥有与 MQTT 服务器对话的 android 代码和服务器代码。

每当数据发生变化时,您都会向订阅客户端发送推送通知,这样他们就不必一直检查数据。

于 2013-03-28T22:38:41.940 回答
0

推送服务,即http://developer.android.com/google/gcm/index.html 但是推送有一定的限制,我想每秒钟的调用都会杀死这个限制。也许只是每 5 秒或 10 秒发送一次请求?即使以这样的速度,房间里的温度也不会改变:)

于 2013-03-28T22:38:37.547 回答