2012-12-18 80 views
1

我正在开发基于Android的服务器websocket应用程序,但通常无法正常工作。当它失败时,我尝试从我的PC ping设备,我无法访问它。我必须重置设备或打开飞行模式并再次关闭。然后,我可以使用ping命令到达设备,并且我的服务器运行良好。如何通过应用唤醒Android设备的Wifi或3G?

有什么建议吗? 谢谢。

编辑: 我发现这里的解决方案: http://www.framentos.com/en/android-tutorial/2012/02/27/how-to-prevent-wi-fi-sleep-on-android/

import android.net.wifi.WifiManager; 
import android.net.wifi.WifiManager.WifiLock; 


WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
WifiLock lock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "LockTag"); 
lock.acquire(); 

再次编辑...

NOP,我thaught,它会工作,但它不...

回答

0

您可能希望应用程序确保设备上启用了Wifi。您无法以编程方式启用它,但您可以打开无线设置菜单,以便用户启用它。为了检测是否存在,你可以使用下面的代码的网络连接:

ConnectivityManager connectivityManager 
       = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 

if(activeNetworkInfo != null && activeNetworkInfo.isConnected()) { 
    // There is a connection 
    ... 
} 
else { 
    // No connection; open the wireless settings menu 
    startActivity(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS)); 
    ... 
} 

您还需要在您的清单以下权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
+0

我会尝试检查与您的解决方案的连接,但我怀疑可能是'activeNetworkInfo.isConnected())'将返回true,并且省电功能仍将继续。我明天会告诉你结果。非常感谢你。 –

+0

没有运气。该代码不帮助我。 –

+0

发布您的套接字代码会很有帮助。 – todd