Wifi state unknown android

Русские Блоги

Служба ConnecttivityService, генерируемая при запуске SystemServer, отвечает за запуск и закрытие wpa_supplicant, запуск и закрытие потока WifiMonitor, а также за выдачу команд для wpa_supplicant и состояние нового WIFI.

Отвечает за получение уведомлений о событиях от wpa_supplicant

1. Прочитайте файл конфигурации

2. Исходные параметры конфигурации, функция вождения

3. Пусть драйвер отсканирует все текущие bssid

4. Проверьте, установлены ли отсканированные параметры по желанию пользователя.

5. Если они совпадают, уведомите водителя для выполнения операции авторизации

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

Модуль управления питанием Wi-Fi

В основном контролируйте GPIO оборудования и включайте и выключайте питание, чтобы модуль CPU и Wifi связывались через интерфейс sdio

Инициализация модуля Wi-Fi

n Настройка параметров AP

net/wireless drivers/wlan_sd8688 arch/arm/mach-pxa/wlan_pm.c

Инициализация модуля Wi-Fi:

При запуске SystemServer будет создан экземпляр ConnectivityService. Конструктор ConnectivityService создаст WifiService. WifiStateTracker создаст WifiMonitor для получения событий из нижнего уровня. WifiService и WifiMonitor являются ядром всего модуля. WifiService отвечает за запуск и закрытие wpa_supplicant, запуск и закрытие потока мониторинга WifiMonitor и выдачу команд для wpa_supplicant, а WifiMonitor отвечает за получение уведомлений о событиях от wpa_supplicant.

Wifi модуль запуска:

Когда WirelessSettings инициализируется, WifiEnabler настраивается для обработки кнопок Wifi,

Когда пользователь нажимает кнопку Wi-Fi, Android вызывает WifiEnabler onPreferenceChange, а затем WifiEnabler вызывает функцию интерфейса WifiManager setWifiEnabled. Через AIDL фактическим вызовом является функция WifiService setWifiEnabled. Затем WifiService отправляет сообщение MESSAGE_ENABLE_WI, которое само обрабатывает сообщение MESSAGE_ENABLE_WI. Выполните активную разрешающую работу в коде: сначала загрузите модуль ядра WIFI (расположение модуля жестко запрограммировано как «/system/lib/modules/wlan.ko» ), а затем запустите wpa_supplicant (Файл конфигурации жестко запрограммирован как «/data/misc/wifi/wpa_supplicant.conf»), а затем запустите поток мониторинга в WifiMonitor через WifiStateTracker.

Найти точку доступа (AP):

(Wi-Fi включен) Упоминается, что после включения модуля Wi-Fi он отправит WIFI_STATE_CHANGED_ACTION во внешний мир. Action Receiver зарегистрирован в WifiLayer. Когда WifiLayer получает это действие, он запускает процесс сканирования следующим образом

Когда wpa_supplicant обработал команду SCAN, он отправит событие в канал управления, чтобы уведомить о завершении сканирования.Этот событие будет получено из функции wifi_wait_for_event, и будет выполнено выполнение MonitorThread в WifiMonitor для выхода из этого события:

Настройте параметры AP:

Когда пользователь выбирает точку доступа в интерфейсе WifiSettings, отображается диалоговое окно для настройки параметров точки доступа:

Читайте также:  Трансляция звука через wifi

Wi-Fi соединение:

Конфигурация IP-адреса:

Источник

Android: wifiManager.isWifiEnabled() returns TRUE but WiFi is disabled

returns true but if I look at Android default Wifi settings, Wifi is still Off. How can I check if WiFi is on without using isWifiEnabled() ?

If you are testing wifi right after changing its state, then the result of isWifiEnabled() is wrong. I had this issue, tried to place a pause and then test it, then it worked. Say, after 5 seconds. The point is that it takes a few second to propagate.

5 Answers 5

You can try to use getWifiState()
Gets the Wi-Fi enabled state.
Returns:
One of WIFI_STATE_DISABLED , WIFI_STATE_DISABLING , WIFI_STATE_ENABLED , WIFI_STATE_ENABLING , WIFI_STATE_UNKNOWN

SupplicantState supState; wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); supState = wifiInfo.getSupplicantState(); 

Which will return one of these states at the time you call getSupplicantState();

ASSOCIATED - Association completed. ASSOCIATING - Trying to associate with an access point. COMPLETED - All authentication completed. DISCONNECTED - This state indicates that client is not associated, but is likely to start looking for an access point. DORMANT - An Android-added state that is reported when a client issues an explicit DISCONNECT command. FOUR_WAY_HANDSHAKE - WPA 4-Way Key Handshake in progress. GROUP_HANDSHAKE - WPA Group Key Handshake in progress. INACTIVE - Inactive state. INVALID - A pseudo-state that should normally never be seen. SCANNING - Scanning for a network. UNINITIALIZED - No connection. 

Источник

Способы устранения проблем подключения Android к Wi-Fi

Вай фай на телефоне

Беспроводные сети

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

Наиболее распространенные причины проблем с подключением

В случаях, когда Андроид не подключается к Wi-Fi, зачастую виноват не столько телефон, сколько настройки самой точки доступа. Есть несколько самых частых проблем, которые не позволяют смартфону подключиться к сети:

  • неверный пароль;
  • попадание MAC-адреса в фильтрацию точки доступа;
  • устройство не имеет функции подключения к беспроводной сети;
  • проблемы с настройками безопасности роутера;
  • в настройках доступа отключен DHCP;
  • стандарт сети, который не поддерживается Андроид;
  • ошибка в установке маршрутизатора;
  • ограничение на количество подключенных пользователей;
  • проблема с прошивкой смартфона или планшета.

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

Решение проблем с подключением Wi-Fi, связанных с Android

В случае обнаружения проблемы следует сначала убедиться в том, что с ОС Андроид все в порядке. Для этого пошагово выполните такие действия:

  1. Убедитесь в правильности вводимого пароля. 90% всех проблем с подключением заключается в неверно введенном пароле. Включите отображение символов, когда вводите ключ, а также уточните у владельца сети (если вы желаете воспользоваться публичным Wi-Fi) его правильность.
  2. Удостоверьтесь, что на смартфоне или планшете отключены функции “В самолете” и “Автономный режим”.
  3. Убедитесь, что мобильное устройство видит сеть. Для этого перейдите в “Расширенные настройки“ – “Wi-Fi“ – “Диапазон частот Wi-Fi“ установите на “Авто”.
    Настройки авто
  4. Если у вас стоит кастомная прошивка, установите официальную. И наоборот, если подключение не работает на официальной, модифицированная прошивка может обновить модуль.
  5. Выполните сброс до заводских настроек или обновите прошивку.
  6. Перейдите в меню Wi-Fi в настройках смартфона или планшета, в списке доступных сетей выберите нужную и удерживайте палец на ней до появления меню. Выберите “Расширенные настройки”, в графе “Настройки прокси-сервера” выберите “Нет”.
    Выберете нет
  7. Если вы уверены в том, что проблема точно не в роутере, скачайте программу Wifi Fixer, перезагрузите Андроид и попробуйте подключиться к точке доступа с его помощью.
Читайте также:  Драйвер своего wifi адаптера

Решение проблем с роутером

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

Настройки роутера

Для настраивания роутера следует воспользоваться компьютером или ноутбуком с установленными браузерами Firefox или Internet Explorer. Вход в настройки осуществляется при помощи специального адреса, который можно найти в инструкции к роутеру или на его обратной стороне. Как правило, он выглядит следующим образом «192.168.1.1».

Этот адрес необходимо вставить в адресную строку и перейти по нему на страницу настройки. Для доступа к параметрам необходимо ввести логин и пароль, которые обычно указаны внизу роутера на обратной стороне корпуса.

Вход

Настройка Wi-Fi сети

Интерфейс настройки роутера выглядит в каждом случае индивидуально, в зависимости от производителя и прошивки. Однако параметры едины для всех устройств, благодаря чему инструкция по настройке является универсальной.

  1. Выставьте тот регион, в котором находитесь.
    Регион
  2. В параметре Wi-Fi канал выберите “Автоматический”.
    Автоматически
  3. Беспроводной режим передачи должен быть выставлен на значение микс (G или B/G/N).
    Значение микс
  4. Максимальное количество подключений/пользователей/клиентов: 0 (неограниченное количество).
    Максимальное количество подключений
  5. Сетевая аутентификация: измените значение на WPA, WPA2 или Open.
    Аутентификация
  6. DHCP-сервер должен быть включен.
    Настройки сервера
  7. Настройки – О телефоне – Общая информация – MAC-адрес Wi-Fi: не должно быть MAC-фильтра. Он создает белый и черный списки адресов, так что может ограничивать отдельные устройства Андроид.
    Настройка о телефонеОтключен

Если настройка не помогла (подключения по-прежнему нет), попробуйте осуществить сброс параметров роутера или установите свежую прошивку.

После каждого внесенного изменения не забывайте нажимать кнопку “Сохранить”. Каждый пункт сохраняется отдельно.

Настройка пароля Wi-Fi

Чтобы узнать пароль от сети Wi-Fi, необходимо зайти в раздел “Настройки безопасности”. Там есть строка “Ключ шифрования”, в которой и находится пароль. В этой же строке можно изменять ключ доступа.

Читайте также:  Оптимально настроить wi fi

Изменить ключ Новый ключ

Проверка работы беспроводной сети

Есть разные диапазоны и частоты Wi-Fi раздачи, от которых в том числе может зависеть возможность подключения ОС Андроид к сети. По умолчанию есть следующие стандарты связи:

Для корректного подключения различных видов устройств, которые поддерживают ту или иную скорость, рекомендуем выбрать в “Основных настройках” в строке “Беспроводной режим” смешанную частоту (mixed).

Беспроводной режим

Телефон не видит Wi-Fi сеть

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

Если у вас на роутере настроен тип шифрования WPA2-TKIP, рекомендуем сменить его при настройке, поскольку ядра многих телефонов на ОС Android не поддерживают и, соответственно, не видят его.

Сменить настройки

Экспериментируйте с настройкой роутера, попробуйте несколько раз сменить канал связи. Если изменения не помогают, обратитесь к специалисту, который поможет обновить прошивку и исправить проблему. Не рекомендуем самостоятельно заниматься перепрошивкой устройств, поскольку ошибочная установка может привести к их выходу из строя.

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

Источник

Android WiFiInfo Error

I am making an application which makes use of internet. I am using WiFiInfo Class to know the status of network availble and using WifiManager to enable and manage Wi-fi connection if available. But the result is Unknown ssid. Also I have modified AndroidManifest.xml to grant permission of android.permission.ACCESS_WIFI_STATE. Maybe someone of you guys can help me . this is the code:

TextView textWifiManager = (TextView)findViewById(R.id.WifiManager); TextView textWifiInfo = (TextView)findViewById(R.id.WifiInfo); TextView textIp = (TextView)findViewById(R.id.Ip); WifiManager myWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE); WifiInfo myWifiInfo = myWifiManager.getConnectionInfo(); int myIp = myWifiInfo.getIpAddress(); textWifiManager.setText(myWifiManager.toString()); textWifiInfo.setText(myWifiInfo.toString()); int intMyIp3 = myIp/0x1000000; int intMyIp3mod = myIp%0x1000000; int intMyIp2 = intMyIp3mod/0x10000; int intMyIp2mod = intMyIp3mod%0x10000; int intMyIp1 = intMyIp2mod/0x100; int intMyIp0 = intMyIp2mod%0x100; textIp.setText(String.valueOf(intMyIp0) + "." + String.valueOf(intMyIp1) + "." + String.valueOf(intMyIp2) + "." + String.valueOf(intMyIp3) ); > > 

3 Answers 3

It is strange that it would return unknown instead of null, but there is a bug documented on it here http://code.google.com/p/android/issues/detail?id=43336 since 1 year ago.

What is the detailed state and suplicant state?

Edit: Trying to make this more helpful see my answer here Get SSID when WIFI is connected for getting the wifi information when wifi is in the right state.

I am not OP, but I’m facing the same problem. is returned from wifiInfo.getSSID() . Adding ACCESS_NETWORK_STATE did not fix this.

zmbq — Curious, are you still having this problem since I answered your question «Get SSID when WIFI is connected?»

Источник

Оцените статью
Adblock
detector