2012-09-10 25 views
1

我有一個運行Android的嵌入式模塊,操作系統在大約5分鐘不活動後斷開WiFi連接。如果我然後運行任何使用網絡連接的應用程序,則WiFi將保持關閉狀態並且圖標不會顯示在狀態欄中。我必須進入設置和WiFi設置以使WiFi恢復。Android。如何調出WiFi

我有一個應用程序必須定期通過WiFi連接發送數據。如果我使用WiFi啓動程序並每隔2-3分鐘發送一次數據,則WiFi將保持活動狀態並且不會斷開連接。如果我讓WiFi斷開連接然後嘗試發送,它永遠不會回來。在代碼中,撥打:

wifi.isWifiEnabled() 

總是返回true,但圖標仍然隱藏,表示WiFi未連接。我試圖從代碼中調用reconnect()作爲一個測試按鈕,但WiFi永遠不會出現。

從終端調試端口我可以鍵入IFCONFIG WLAN0 UP和WiFi連接到AP。

是否有任何呼叫我可以做,這將導致WiFi重新連接,有沒有什麼辦法可以實際檢測到WiFi斷開,而不是檢測到TCP/IP連接失敗?

響應於REQUEST下面,我已加入下列代碼段和logcat的OUTPUT

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起來,在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 
+1

1)什麼是模塊?你到目前爲止對此有何看法? 2)該模塊是否配備了特定板卡功能的特殊API?或者它是純粹的android SDK的東西? –

+0

嗨Juian。我正在使用FriendlyArm的Mini210。它配備了Android 2.3源代碼,並且使用本地代碼JNI構建它以包含RS232,GPIO和I2C功能,以便我可以在Android代碼中訪問它們。除了WiFi問題,我發現它運行良好。 –

回答

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

試試這個,不知道加工。

+0

我在我現有的代碼中有這個。 –

0

使用此權限,您的清單

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

設置其狀態使用以下:

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

我有我的代碼和清單中的所有這些,它仍然不會出現。 –

+0

登錄貓的任何​​錯誤? –

+0

你可以顯示一些包含上述部分的代碼嗎? –