2012-04-11 37 views
1

Page Plusで使用しているAndroid携帯があります。私は、デバイスがWiFiネットワークに接続されているかどうかを(Linux Webサーバーから)リモートで検出する最善の方法を見つけようとしています。Android Phoneの接続状態をリモートで検出する

Wi-Fiに接続していないときに私のGoogle音声アカウントでSMS転送を無効にしたいのですが、携帯電話にデータ接続がないため、これはリモートで起動する必要があります。私は転送設定トグル機能をプログラムする方法を知っている、私はリモートでアンドロイドデバイス無線LANの状態を検出する必要があります。

携帯電話のgtalkステータスを監視し、アンドロイドクライアントがオンラインであるかどうかを検出するなどのいくつかのアイデアを投げました。これを動作させるように並べ替えることはできますが、世界。

推奨事項やアイデアはありますか?私はこれがまさにプログラミングの質問ではないことを知っていますが、私はいくつかの助けが大好きです!

+0

クライアント(電話)でコードを実行できますか? – mfrankli

+0

はい、クライアントでコードを実行できます。私は、電話機が無線LAN切断時に転送設定を無効にするだけですが、Wi-Fiから切断した後はネットワークアクセスがないため不可能です。 – xur17

答えて

1

wifiが接続されているときは一定の間隔でWebサーバーにpingを実行するバックグラウンドサービスを実行できます。クライアントが「スケジュールされた」チェックインを逃した場合、Webサーバーは電話が切断されたと判断し、あなたがその場合に望むどんな行動でも。

は、私は、単純なTCPソケットを使用し、サーバーにpingを実行するには、次の

// 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

どのようなバッテリ寿命の影響がありますか? 1つのpingがバッテリーの寿命に非常に影響しますか? – xur17

+1

これをより厳密にチェックするための実験を実行することはおそらく可能ですが、Wi-Fiに接続している間の1分あたりの1分あたりのピングがバッテリ寿命にはほとんど影響しないと思います。 Wi-Fiが接続されている間は、一般的に多くのデータを送受信しているため、小さなメッセージがおそらくキラーになることはないと考えてください。 – mfrankli

+0

面白いアイデアのように聞こえる - 明らかに、私はpingの最小限のデータ使用を望んでいます - これを行うための最善の方法に関するアイディア? HTTPにはかなりのオーバーヘッドがあります。カスタムTCP接続はもっと意味がありますか? – xur17

関連する問題