2012-07-16 1 views
1

Я использую Samsung Galaxy с ICS.Потеря данных [3G/WIFI] при подключении телефона в режим ожидания

Я разрабатываю клиент SIP. клиент теряет соединение с сервером, когда телефон переходит в спящий режим. Попробовали приложение «WIFI Lock» с рынка Android и попробовали настройку WIFI_SLEEP_POLICY_NEVER, но пока не удалось добиться успеха. Кто-нибудь в прошлом решил проблему такого рода связи? Мне нужно подключиться к Интернету. Ставьте на это мобильные данные/WIFI, потому что я не могу позволить себе потерять соединение с сервером.

+1

Я знаю, что это действительно старо, но вы когда-нибудь решали эту проблему? –

+0

Это не проблема андроида. Был один сон в одной из наших ниток, которая вызывала освобождение LOCK. Я смутно помню точное решение. –

ответ

0

Попробуйте перейти к настройкам 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.

+0

В настройках Wi-Fi политика сна уже установлена ​​на НИКОГДА. Я пробовал WIFI_SLEEP_POLICY_NEVER с WRITE_SETTINGS & WRITE_SECURE_SETTINGS и распечатал возврат Settings.System.putInt (getContentResolver(), Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_NEVER); который возвращает true. Не уверен, что возвращение имеет какое-то значение здесь. –

1

Убедитесь, что в манифесте у вас есть разрешение:

<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); 
+0

Это уже опробовано и не работает. –

+0

У вас есть разрешение в вашем манифесте? Я говорю это, потому что я протестировал этот код и его работу ... –

+0

Каков результат настройки, когда вы это делаете: 'android.provider.Settings.System.getInt (getContentResolver(), android.provider. Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_DEFAULT) ' –

0

Я нашел this SO post по-видимому, имеются многочисленные ошибки о том, что на Android Bug Tracker, который мощь происходит даже с замками и разрешения.


В моем случае я могу заставить Lock работать со всем устройством, на котором я могу протестировать. Не знаете, как вы пытались его реализовать, так что вот версия, которую я нашел через интернет (Извините, если я не могу найти автора).

Примечание: моя версия может немного отличаться от версии Java, поскольку я использую Xamarin Android на C#, но логика должна оставаться неизменной.

Сначала вы должны добавить разрешение для блокировки Wi-Fi

<uses-permission android:name="android.permission.WAKE_LOCK" /> 

Второй вы должны получить wifiManager

wifiManager = (WifiManager) GetSystemService(WifiService); 

Затем вы должны написать код, чтобы aquire и освободить замок на подходящее время.

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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^