2012-04-11 71 views
1

我在Page Plus上使用了一個android手機。我試圖找出從Linux網絡服務器遠程檢測設備是否連接到無線網絡的最佳方法。遠程檢測Android手機的連接狀態

我想在我的谷歌語音帳戶沒有連接到WiFi時禁用短信轉發,但由於我的手機沒有數據連接,所以必須遠程觸發。我知道如何編程轉發設置切換功能,我只需要遠程檢測Android設備的WiFi狀態。

我已經拋出了一些想法,比如監視手機的gtalk狀態,並檢測android客戶端是否在線 - 我可以讓這個工作,但它不是最乾淨的方法世界。

任何建議或想法?我知道這不完全是一個編程問題,但我會喜歡一些幫助!

+0

你能在客戶端(手機)上運行代碼嗎? – mfrankli 2012-04-11 15:00:49

+0

是的,我可以在客戶端上運行代碼。我只是想讓手機在wifi斷開連接時禁用轉發設置本身,但這是不可能的,因爲我從無線網絡斷開連接後沒有網絡接入。 – xur17 2012-04-11 15:02:05

回答

1

您可以在Android客戶端上運行後臺服務,該服務器每當連接wifi時都會以固定時間間隔ping Web服務器 - 每當客戶端錯過「預定」簽入時,Web服務器會認爲電話已斷開連接,並執行在這種情況下你想要的任何動作。

要ping服務器,我會用一個簡單的TCP套接字:

// you could use IP address instead of the hostname if you don't have a domain name 
// PORT_NUM is some value shared between the server and the client e.g. 3456 
Socket sock = new Socket("mywebserverurl.com", PORT_NUM); 
OutputStream out = sock.getOutputStream(); 
String data = getDataServerNeeds(); 
out.write(data.getBytes()); 
sock.close(); 

This tutorial具有更詳細的例子,包括在服務器側的方面。

+0

那會有什麼樣的電池壽命影響?一個人能夠平穩地影響電池壽命嗎? – xur17 2012-04-11 15:09:57

+1

您可以運行一個實驗來更嚴格地檢查這個問題,但我會想象一下,每分鐘連接一個ping會對電池壽命產生微不足道的影響。考慮到雖然wifi已連接,但您的手機通常會發送/接收大量數據,因此一條小消息可能不會成爲殺手鐗。 – mfrankli 2012-04-11 15:11:38

+0

聽起來像一個有趣的想法 - 顯然我想要最小的數據使用量的平 - 任何想法的最佳方式來做到這一點? HTTP會有相當多的開銷 - 某種定製的TCP連接會更有意義嗎? – xur17 2012-04-11 15:26:42