Андроид. Как поднять WiFi

У меня есть встроенный модуль под управлением Android, и ОС отключает WiFi примерно через 5 минут бездействия. Если я затем запускаю какое-либо приложение, использующее сетевое подключение, WiFi остается выключенным, а значок не отображается в строке состояния. Мне нужно зайти в настройки и настройки WiFi, чтобы снова включить WiFi.

У меня есть приложение, которое должно периодически отправлять данные через соединение WiFi. Если я запускаю программу с активным WiFi и отправляю данные каждые 2-3 минуты, WiFi остается активным и никогда не отключается. Если я позволю WiFi отключиться, а затем попытаюсь отправить, он никогда не вернется. В коде вызов:

    wifi.isWifiEnabled()

всегда возвращает true, но значок остается скрытым, что означает, что Wi-Fi не подключен. Я попытался вызвать reconnect() из кода в качестве теста с помощью кнопки, но WiFi так и не появился.

Из порта отладки терминала я могу ввести IFCONFIG WLAN0 UP, и WiFi подключается к точке доступа.

Есть ли какой-либо вызов, который я могу сделать, чтобы вызвать повторное подключение WiFi, и есть ли способ, которым я могу фактически обнаружить, что WiFi отключен, кроме обнаружения того, что соединение TCP / IP не удалось?

В ОТВЕТ НА ЗАПРОС НИЖЕ Я ДОБАВИЛ СЛЕДУЮЩИЕ ФРАГМЕНТЫ КОДА И ВЫВОД LOGCAT

    wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

    wifiLock = wifi.createWifiLock(WifiManager.WIFI_MODE_FULL, "Mini210-Lock");
    if(!wifiLock.isHeld())
    {
        wifi.setWifiEnabled(true);
        wifi.reconnect();
        // wifi.reassociate(); // Also try this!!
        wifiLock.acquire();    // Keep system alive
        Log.i("Alarm System", "WiFi Lock Acquired");
    }

Logcat показывает следующее, когда приведенный выше код запускается.

    09-10 22:43:25.273: I/Alarm System(611): WiFi Lock Acquired
    09-10 22:43:25.417: I/ActivityManager(91): Display axon.alarm.system/.AlarmSystemActivity: +15s198ms (total +4h23m59s645ms)
    09-10 22:43:31.636: W/wpa_supplicant(133): Failed to initiate AP scan.
    09-10 22:43:41.636: W/wpa_supplicant(133): Failed to initiate AP scan.

Когда я ввожу ifconfig wlan0 up в порт монитора отладки, в logcat появляется следующее (некоторые повторяющиеся выходные данные были удалены)

    09-10 22:56:12.726: I/wpa_supplicant(133): CTRL-EVENT-SCAN-RESULTS  Ready
    09-10 22:56:12.726: I/wpa_supplicant(133): Trying to associate with 00:22:75:32:a9:47 (SSID='kpk_mobile' freq=2412 MHz)
    09-10 22:56:20.976: D/dhcpcd(623): checking 192.168.1.123 is available on attached networks
    09-10 22:56:20.976: D/dhcpcd(623): sending ARP probe (1 of 3), next in 1.73 seconds
    09-10 22:56:22.710: D/dhcpcd(623): sending ARP probe (2 of 3), next in 1.00 seconds
    09-10 22:56:23.714: D/dhcpcd(623): sending ARP probe (3 of 3), next in 2.00 seconds
    09-10 22:56:25.718: D/dhcpcd(623): leased 192.168.1.123 for 86400 seconds
    09-10 22:56:25.718: D/dhcpcd(623): adding IP address 192.168.1.123/24
    09-10 22:56:25.718: D/dhcpcd(623): adding route to 0.0.0.0/0 via 192.168.1.1
    09-10 22:56:25.730: D/dhcpcd(623): executing `/system/etc/dhcpcd/dhcpcd-run-hooks', reason BOUND
    09-10 22:56:25.773: D/dhcpcd(623): forking to background
    09-10 22:56:25.804: V/WifiStateTracker(91): DhcpHandler: DHCP request succeeded
    09-10 22:56:25.804: V/WifiStateTracker(91): IP configuration: ipaddr 192.168.1.123  gateway 192.168.1.1 netmask 255.255.255.0 dns1 192.168.1.1 dns2 0.0.0.0 DHCP server 192.168.1.1 lease 86400 seconds
    09-10 22:56:25.816: I/TelephonyRegistry(91): notifyDataConnection: state=0 isDataConnectivityPossible=false reason=dataDisabled interfaceName=null networkType=0
    09-10 22:56:25.828: D/WifiWatchdogService(91): (android.server.ServerThread) kpk_mobile (00:22:75:32:a9:47) does not require the watchdog
    09-10 22:56:25.843: V/FTPDroid(356): EventsReceiver: NETWORK_STATE_CHANGED_ACTION (exists: true, connected: true)
    09-10 22:56:25.863: D/Tethering(91): MasterInitialState.processMessage what=3
    09-10 22:56:25.902: I/GTalkService(278): [ServiceAutoStarter] --- connectivity changed
    09-10 22:56:25.902: I/GTalkService(278): [ServiceAutoStarter] --- start GTalk   service ---
    09-10 22:56:27.789: D/dhcpcd(647): sending ARP announce (1 of 2), next in 2.00 seconds
    09-10 22:56:29.789: D/dhcpcd(647): sending ARP announce (2 of 2)
    09-10 22:56:29.789: D/dhcpcd(647): renew in 43196 seconds

person Dave McLaughlin    schedule 10.09.2012    source источник
comment
1) Что за модуль? и что вы думаете об этом до сих пор? 2) поставляется ли модуль с какими-либо специальными API для определенных функций платы? или это чистый Android SDK?   -  person Julian Higginson    schedule 10.09.2012
comment
Привет Джуан. Я использую Mini210 от FriendlyArm. Он поставляется с исходным кодом Android 2.3, и я создал его, чтобы включить возможности RS232, GPIO и I2C с использованием собственного кода JNI, поэтому я могу получить к ним доступ из кода Android. Я обнаружил, что он работает хорошо, за исключением проблем с WiFi.   -  person Dave McLaughlin    schedule 10.09.2012


Ответы (2)


WifiManager wifiManager = (WifiManager) this.getApplicationContext()
                .getSystemService(Context.WIFI_SERVICE);
wifiManager.setWifiEnabled(true);

Попробуйте это, не знаю, работает ли.

person Tom    schedule 10.09.2012

Используйте эти разрешения в своем манифесте

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

Установите его состояние на ON, используя ниже:

wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); 
wifiManager.setWifiEnabled(true);
person Aditya Nikhade    schedule 10.09.2012
comment
У меня есть все это в моем коде и манифесте, и он все равно не появится. - person Dave McLaughlin; 10.09.2012
comment
Я отредактировал исходную публикацию выше, чтобы показать то, что вы просили. Извините, я новичок на форуме, поэтому только учусь тому, как писать здесь!! - person Dave McLaughlin; 10.09.2012