Предотвращение отключения Wi-Fi-direct, когда он не используется

Я нацелен на API 17 и использую приведенный ниже код для включения прямого Wi-Fi (P2P). Все работает нормально (поиск и подключение к одноранговым узлам), однако, когда он не используется, WiFi-direct время от времени отключается (похоже, это зависит от телефона Android - у меня около 3-5 минут), что также отключает WiFi заставляет меня терять подключение к Интернету.

У меня есть приемник, который определяет, когда состояние P2P изменяется, чтобы снова включить его, но было бы здорово, если P2P всегда будет включен, даже если он не подключен к какому-либо одноранговому узлу.

Можно ли продолжать пинговать сам телефон Android для этого? Любое другое предложение?

public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    if (WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION.equals(action)) {

        // UI update to indicate wifi p2p status.
        int state = intent.getIntExtra(WifiP2pManager.EXTRA_WIFI_STATE, -1);
        if (state == WifiP2pManager.WIFI_P2P_STATE_ENABLED) {
            // Wifi Direct mode is enabled
            activity.setIsWifiP2pEnabled(true);
        } else {
            activity.setIsWifiP2pEnabled(false);
            activity.resetData();

        }

person Devester    schedule 13.04.2015    source источник
comment
Разве это не потребляет большую часть заряда батареи вашего устройства, а скорее пингует в течение некоторых интервалов времени?   -  person Tharif    schedule 13.04.2015
comment
Вы действительно прочитали свой код, что это не тот, который вызывает отключение? обычно API не должен делать это автоматически.   -  person Dr.Jukka    schedule 15.04.2015


Ответы (1)


Вам следует приобрести WifiLock. Или ты?

Из записи javadoc для WakeLock:

Обычно радио Wi-Fi может отключаться, если пользователь долгое время не использовал устройство. Приобретение WifiLock будет держать радио включенным до тех пор, пока блокировка не будет снята.

Подробнее о WifiLock: http://developer.android.com/reference/android/net/wifi/WifiManager.WifiLock.html

Прочтите также ответ на этот вопрос: Используется ли WakeLock излишне при использовании WifiLock на Android?

person Tomasz Gawel    schedule 15.04.2015