Потеря данных [3G / WIFI] подключения, когда телефон переходит в спящий режим

1

Я использую Samsung Galaxy с ICS.

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

  • 1
    Я знаю, что это действительно старый, но вы когда-нибудь решали эту проблему?
  • 0
    Это была не проблема Android. Был один сон в одной из наших веток, который вызывал освобождение LOCK. Хотя я смутно помню точное решение.
Теги:
wifi
sip
3g

3 ответа

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
    у вас было разрешение в вашем манифесте? Я говорю это, потому что я проверил этот код и он работает ...
Показать ещё 5 комментариев
0

Я обнаружил, что это сообщение 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;
}
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
    В настройках Wifi политика сна уже установлена НИКОГДА. Я попытался WIFI_SLEEP_POLICY_NEVER с WRITE_SETTINGS & WRITE_SECURE_SETTINGS и распечатал возвращение Settings.System.putInt (getContentResolver (), Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SYEP__ который возвращает истину. Не уверен, что возвращение имеет какое-либо значение здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню