2012-04-11 34 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