2012-04-25 70 views
0

我正在一個項目中,我可以看到來自我的Android應用程序門前的人的攝像頭圖像。Android連續tcp輪詢

但我感到有點困惑。我已經設法建立一個與我的手機上的服務連接到服務器來處理圖像發送。

但是我只想從服務器獲取圖片,當有人按下門鈴時,所以我需要發送通知或其他東西到我的應用程序,所以我知道有一個在門前,我想決定是否我想回答他的電話或不。

現在這就是爲什麼我很困惑:如果我打開android服務中的tcp套接字,我怎麼能知道我的服務器發送'call'消息,因爲在創建服務時tcp套接字是openend。我需要每秒保持輪詢嗎?那麼我還有一點機會會錯過這個通話信息?

或者我必須運行應用程序作爲服務器和門鈴作爲客戶端,所以客戶端請求連接?

+0

請問您如何檢測門鈴事件?服務器放置在與門和相機相同的位置嗎?誰檢測到門鈴,服務器或Android客戶端? – 2012-04-25 11:11:38

+0

該服務器是一個基於Linux的計算機運行一個Qt程序,這是服務器應用程序。當門鈴被按下時,Qt程序會識別出這個消息併發送給客戶端(android應用程序)門鈴被按下 – 2012-04-25 11:40:05

回答

1

看看雲設備消息傳遞,c2dm,也更加省電。內置於android。 https://developers.google.com/android/c2dm/

+0

所以,你推薦使用C2DM並從服務器發送消息到雲端,雲端到我的機器人。所以我可以從我的android發送消息回到雲端,還是我需要打開一個tcp套接字來讀取圖像?我正在使用Qt(C++)編寫我的服務器端 – 2012-04-25 11:16:24

+0

+1我不知道C2DM。 – 2012-04-25 11:50:46

+1

@Gunther服務器可以有一個開放的套接字等待客戶端,當門鈴響起時,它會發送一條C2DM消息,以便客戶端的Android應用可以打開套接字並開始接收圖像源。 – 2012-04-25 11:53:56

0

如果在創建服務時打開tcp套接字,只需從服務器向連接的客戶端發送一些適當的消息即可。如果你的客戶端已連接,它會得到它。您只需要調查客戶端是否連續連接和斷開連接,例如。像許多HTTP 1 Web服務一樣。

+0

而且我必須在代碼中檢查消息嗎? – 2012-04-25 11:15:58