當前位置:編程學習大全網 - 編程軟體 - Android下怎麽通過應用程序同時開啟wifi和3G

Android下怎麽通過應用程序同時開啟wifi和3G

編程時候發現當打開WIFI網絡的時候系統默認就會把3G網絡給關閉,估計是出於省電的原因才如此做的,但目前我需要同時使用這兩個網絡接口,經過壹番研究找到了方法,故寫成日誌記錄下來。

1、android網絡機制。

wifi的開啟關閉首先由應用程序觸發的事件開始(比如用戶點擊開啟圖標),然後傳入framework層,framework層啟動wpa_supplicant,同時建立socket連接與wpa_supplicant進行通信,包括對wpa_supplicant的控制與得到wpa_supplicant的回傳結果。若連接上了壹個無線網絡,則調用dhcp服務申請ip地址(或者使用預先設置好的ip,不過大部分情況下是dhcp的)。若這壹切正常則斷開3g網絡連接並關閉3g接口。

因此從這個角度分析,若要同時啟動3g和wifi則必須繞過framework層,手動完成上述所有操作。

因此我找到的方法是在3g網絡不斷的情況下,手動啟動wifi網絡,連接指定ap並申請ip。

2、操作步驟。

(1) 準備工作

因為牽扯到底層操作,所以root必不可少,在root的情況下進入adb shell,若adb daemon沒有root使用adb root命令進而使adb shell獲得root權限。

原則上使用android裏的終端軟件也是可以的,但我沒有測試。

(2)加載wifi驅動。

不加載驅動在netcfg裏面根本看不到wlan0網卡,因此首先要加載驅動。

壹般情況下,驅動放在/system/lib/modules下,我的驅動模塊是wlan.ko。

insmod /system/lib/modules/wlan.ko。

接著刪除默認路由表項

ip route del default via 172.18.206.76 dev rmnet_usb0

重新添加指向wifi的默認路由表

ip route add default via 192.168.1.140 dev wlan0

  • 上一篇:web服務器有哪些
  • 下一篇:螞蟻d3算術板怎麽修?
  • copyright 2024編程學習大全網