Я использую Samsung Galaxy с ICS.
Я разрабатываю клиент SIP. клиент теряет соединение с сервером, когда телефон переходит в спящий режим. Попробовали приложение "WIFI Lock" с рынка Android и попробовали настройку WIFI_SLEEP_POLICY_NEVER, но пока не удалось добиться успеха. Кто-нибудь в прошлом решил проблему такого рода связи? Мне нужно подключиться к Интернету. Ставьте на это мобильные данные /WIFI, потому что я не могу позволить себе потерять соединение с сервером.
Убедитесь, что в вашем манифесте у вас есть разрешение:
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
Он будет использоваться для установки политики сна Wi-Fi, чтобы никогда не спать при подключении к доверенной сети.
http://developer.android.com/reference/android/Manifest.permission.html
Тогда вам нужно только сделать это:
Settings.System.putInt(getContentResolver(),
Settings.System.WIFI_SLEEP_POLICY,
Settings.System.WIFI_SLEEP_POLICY_NEVER);
Я обнаружил, что это сообщение SO, по- видимому, есть многочисленные ошибки об этом в Android Bug Tracker, которые могут встречаться даже с Locks и разрешениями.
В моем случае мне удается заставить Lock работать со всем устройством, на котором я могу проверить. Не знаете, как вы пытались его реализовать, так что вот версия, которую я нашел через интернет (Извините, если я не могу найти автора).
Примечание. Моя версия может немного отличаться от версии Java, поскольку я использую Xamarin Android в С#, но логика должна оставаться прежней.
Сначала вам нужно добавить разрешение на блокировку Wi-Fi
<uses-permission android:name="android.permission.WAKE_LOCK" />
Во-вторых, вы должны получить wifiManager
wifiManager = (WifiManager) GetSystemService(WifiService);
Затем вы должны написать код для доступа и освободить блокировку в соответствующее время.
private void AquireWifiLock()
{
if (wifiLock == null)
{
wifiLock = wifiManager.CreateWifiLock(WifiMode.Full, "aTagForYourLock");
wifiLock .Acquire();
}
}
private void ReleaseWifiLock()
{
if (wifiLock == null)
{
return;
}
wifiLock .Release();
wifiLock = null;
}
Попробуйте перейти к настройкам Wi-Fi, нажав кнопку меню и выбрав расширенный. Там вы найдете элемент управления политикой сна Wi-Fi.
Кроме того, если WIFI_SLEEP_POLICY_NEVER не работает, проверьте, есть ли у вас разрешение на это на http://developer.android.com/reference/android/Manifest.permission.html. Я не знаю, какой из них вы должны использовать, возможно, WRITE_SYNC_SETTINGS
, ACCESS_WIFI_STATE
, CHANGE_NETWORK_STATE
, CHANGE_WIFI_MULTICAST_STATE
или CHANGE_WIFI_STATE
.