2013-03-28 131 views
0

我已經實現了一個家庭監測和控制系統,包含一些運動探測器和溫度傳感器,它們連接到一臺迷你PC作爲服務器。在這臺PC上,我有一個.NET ASMX Web服務,它有一些方法,返回檢測器的狀態和環境溫度。事件驅動的網絡服務

爲了實現設備的情況,我試圖建立一個Android應用程序,可以通過Wifi連接到網絡服務並顯示溫度。 當溫度超過臨界範圍或運動檢測器檢測到運動時,此應用程序必須顯示相關通知。

這裏的問題是:每次我需要系統情況時,我都會查詢web服務。但這樣我必須每隔一秒查詢Web服務,以瞭解溫度是否超出臨界範圍,以及探測器是否檢測到運動。 問題:有沒有更好的解決方案來實現這一目標?或者有什麼方法可以讓Web服務在發生事件時通知客戶?

請注意,我在我的android應用程序中使用KSOAP2庫。

在此先感謝

回答

1

您需要考慮使用推送通知模式,而不是輪詢服務器以檢查新數據。

這裏有幾個選項。最簡單也是最標準的方法是查看谷歌的推送通知系統,稱爲谷歌雲消息傳遞(GCM)。請注意,這僅適用於擁有Google服務的設備(因此,如果您使用的是Kindle Fire,則可以' t使用它)

或者您可以考慮基於MQTT協議的更多定製版推送通知。您需要設置您自己的MQTT服務器,並且擁有與MQTT服務器交談的android代碼和服務器代碼。

無論何時數據發生變化,您都會向訂閱客戶端發送推送通知,這樣他們就不必一直檢查數據。

+0

感謝您的信息 – Kaiser

+0

我找到了另一個解決方案,但我不確定,所以如果我錯了,請糾正我。也許我可以使用套接字編程,而不是使用Web服務。通過監聽雙方的特定端口並定義自己的通信協議,我可以將消息從服​​務器發送到客戶端,反之亦然。 – Kaiser

+0

是的,這是正確的,但這意味着您將有一個連接到服務器的連接,如果在後臺運行,將會消耗電池電量。 –

0

推送服務,即http://developer.android.com/google/gcm/index.html 但有推動的一定的限制,我想每個第二個電話會殺了這個限制。也許只是每5秒或10秒發送一次請求?房間溫度即使在這個速率下也不會改變:)

+0

這是有用的服務,但當互聯網連接消失時會出現另一個問題。無論如何感謝您的回覆。 – Kaiser

+0

這是使用GCM的優勢。一旦互聯網連接回來,它會盡快通知設備。 –