2012-01-03 128 views
19

我正在研究將在手機上運行的應用程序,其中手機 將成爲專用Wi-Fi網絡上的一個電臺。該電話將是一個 電臺,而不是一個接入點,並且私人Wi-Fi網絡不會將 路由到Internet。我的應用程序需要與Internet上的 服務器以及本地Wi-Fi網絡上的設備 進行通信,因此它需要同時在兩個網絡上建立連接。 我一直在想如何做到這一點。我可以在Android上同時打開Wi-Fi和蜂窩網絡接口嗎?

我一直在題爲 谷歌Android開發組的討論中描述的技術「可以 的Android 2.X連接到3G和WiFi網絡數據同步?」,但它 都不盡如人意。我發現當我通過撥打 ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE), 啓用 蜂窩網絡時,我在Wi-Fi網絡上打開的任何插座都會關閉。我沒有 嘗試過,但我懷疑在切換回Wi-Fi時, 蜂窩網絡上的套接字會發生同樣的情況。

另一個問題是,這些調用在全球範圍內操作,更改整個手機的網絡設置 ,而不僅僅是應用程序。切換像這樣全局設置的網絡 將會干擾在手機上正在運行的任何其他應用程序。即使在我的應用程序退出後,手機也會繼續運行,並保持最後一次設置的網絡配置。

我正在尋找一種方法,可以同時在蜂窩網絡 數據和Wi-Fi網絡上打開連接,並且不會干擾在手機上運行的其他應用程序的 。

1.有誰知道該怎麼做 這個?
2.有人知道這是否可能?

感謝您的幫助。

+1

也有類似的問題嗎? http://stackoverflow.com/questions/5497553/wifi-and-3g-same-time – 2012-01-03 20:55:34

回答

0

如果你不能使用API​​調用,並且如果你願意讓你的手變得更低級別,那麼一些linux知識可能會有所幫助。 基本上你需要做的是調出兩個接口,並在3g接口上設置默認路由。 您將不得不使用具有root權限的系統命令來執行此類任務。 關閉套接字的原因可能是由於API調用而導致關閉的接口。

0

沒有root訪問權限的應用程序不能影響太大。

使用Android API,您最多可以做的只是打開WiFi,希望設備將切換到該設備並關閉WiFi以使設備切換到3G(如果它在那裏,APN是正確的等) 。

其他任何事情都不能保證工作。例如。設置首選連接類型並不能保證設備將切換到該類型。

通常的行爲是,只要WiFi變得可用,設備將同時具有3G和WiFi短時間(3-5秒),然後關閉3G。一旦用戶或您的應用程序關閉了WiFi,並且設備嘗試連接到Internet,它將在短時間後打開3G。

從Android 2.3開始,您不能再禁用/啓用3G。一個用於破壞/恢復APN設置以啓用/禁用3G,但從4.0開始,您無法以編程方式更改APN設置。

+0

不完全 - 仍然可以手動禁用3G。只需打開撥號程序並輸入'*#*#4636#*#*'。然後點擊「電話信息」和「關閉收音機」。 – 2016-03-17 01:14:49

0

我認爲一次只能有一種服務。您可以使用WiFi,也可以使用手機3G數據。兩者不能同時工作。

1

此線程Android: Force data to be sent over radio vs WiFi提到兩種可能的解決方法。

  1. 設置,只要你想你的應用程序使用特定連接的網絡偏好:

    ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); 
    
  2. 啓用高優先級的移動數據連接:

    connectivityManager.startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, "enableHIPRI"); 
    

對於第二它的具體說明是它與Android 2.2一起使用,不知道這是否也適用於實際版本。但據我發現,enableHIPRI或多或少是一個隱藏的網絡設置,所以如果可能的話,我寧願選擇第一種方法。

0

3G和Wifi數據網絡不能同時連接,但如果運營商支持和android框架也爲運營商更改,3G和Wifi可以同時連接。 現在一些運營商已經有了這個功能,但有些運營商卻不能。

0

目前在Android應用程序中無法同時使用兩個網絡,但您可以在PC中執行此操作。
從WIFI路由器和LAN或USB Internet Stick中連接一個。
因此創建APp並在PC上使用。如果你不知道如何在PC上運行Android而不是谷歌它。

0

如果我沒有弄錯,如果Wi-Fi和3G/4G都可用,Wi-Fi將優先。

只有當Wi-Fi不可用時,纔會切換到3G/4G。當然,這兩者都是同時打開的。

取而代之的是使用私人無線網絡從而限制您的選擇,您可能會考慮使用面向VPN的互聯網,以便設備從3G/4G連接到VPN,然後訪問數據,無線上網,。

而且VPN客戶端內置在Android中,也有第三方客戶端可用。

希望它有幫助!

0

你可能想看看ad-hoc wifi網絡。 它通過wifi連接到設備,即使機器人已經使用互聯網的WiFi(不使用IP堆棧,但)。

不要混淆與互聯網(IP)連接的WiFi(IEEE 802.11x)連接。 IP可以在wifi,移動,以太網,DSL,dailup或歸巢鴿子上運行,但一次只能運行一個網絡。

欲瞭解更多有關ad-hoc wifi網絡的信息,請查看以下鏈接。

https://code.google.com/p/android-wifi-tether/

請注意,許多運營商禁止組播(共享)的IP連接。尼斯。

相關問題