2012-01-03 4 views
19

Sto lavorando a un'applicazione che verrà eseguita su un telefono in cui il telefono sarà una stazione su una rete Wi-Fi privata. Il telefono sarà una stazione , non un punto di accesso e la rete Wi-Fi privata non effettua il percorso su Internet. La mia applicazione deve comunicare con i server su Internet così come i dispositivi sulla rete Wi-Fi locale, , quindi è necessario avere connessioni su entrambe le reti contemporaneamente. Ho cercato di capire come farlo.Posso avere entrambe le interfacce di rete Wi-Fi e cellulare aperte contemporaneamente su Android?

Ho cercato la tecnica descritta nella discussione sul Google Android gruppo sviluppatori intitolato "Può Android 2.X connettersi a 3G e reti di dati Wifi contemporaneamente?", Ma non funziona bene. Quello che trovo è che, quando abilito la rete cellulare chiamando ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE), tutti i socket che ho aperto sulla rete Wi-Fi sono chiusi. Non l'ho provato con lo , ma sospetto che la stessa cosa accadrà alle prese sulla rete cellulare quando torno alla rete Wi-Fi.

Un altro problema è che, queste chiamate operano a livello globale, modificando le impostazioni di rete per l'intero telefono, non solo l'applicazione. La commutazione della rete impostata a livello globale in questo modo interferirà con qualsiasi altra app che è in esecuzione sul telefono. Anche dopo la chiusura dell'applicazione, , il telefono continua a funzionare con l'ultima configurazione di rete impostata.

Sto cercando un modo per avere connessioni aperte su entrambi i cellulari dati e reti Wi-Fi allo stesso tempo, e senza interferire con altre applicazioni in esecuzione sul telefono.

1. Qualcuno sa come fare questo?
2. Qualcuno sa se questo è possibile?

Grazie per il vostro aiuto.

+1

Domanda simile? http://stackoverflow.com/questions/5497553/wifi-and-3g-same-time –

risposta

0

Se non riesci a farlo utilizzando le chiamate API e se sei disposto a sporcarti le mani con il livello inferiore, alcune conoscenze di linux potrebbero essere utili. Fondamentalmente quello che devi fare è aprire entrambe le interfacce e avere la route predefinita impostata sull'interfaccia 3G. Dovrai utilizzare i comandi di sistema con privilegi di root per questo tipo di attività. Il motivo per i socket chiusi è probabilmente l'interfaccia che va giù e torna a causa della chiamata API.

0

Senza accesso root, l'app non può influenzare molto.

Con l'API di Android, ciò che puoi fare al massimo è attivare il WiFi nella speranza che il dispositivo passi ad esso e spenga il WiFi per far passare il dispositivo a 3G (se è lì, l'APN è corretto ecc.) .

Tutto il resto non è garantito per funzionare. Per esempio. l'impostazione del tipo di connettività preferenziale non garantisce che il dispositivo passi a quel tipo.

Il comportamento normale è che non appena il WiFi diventa disponibile, il dispositivo avrà sia 3G che WiFi per un breve periodo (3-5 secondi) e quindi disattiverà il 3G. Non appena il Wi-Fi viene disattivato dall'utente o dall'app, e il dispositivo tenta di connettersi a Internet, si accenderà 3G dopo poco tempo.

A partire da Android 2.3 non è più possibile disabilitare/abilitare l'evento. Uno usato per rovinare/ripristinare le impostazioni APN per abilitare/disabilitare 3G, ma a partire da 4.0 non è possibile modificare le impostazioni APN a livello di programmazione.

+0

Non proprio - è ancora possibile disabilitare manualmente il 3G. Basta aprire il dialer e inserire '* # * # 4636 # * # *'. Quindi tocca "Informazioni telefono" e "Disattiva radio". –

0

Penso che sia possibile un solo servizio alla volta. O puoi utilizzare il WiFi o puoi usare i Dati cellulari 3G. Entrambi non possono funzionare contemporaneamente alla volta.

1

Questa discussione Android: Force data to be sent over radio vs WiFi menziona due possibili approcci al problema.

  1. impostare la preferenza di rete ogni volta che si desidera la vostra applicazione per utilizzare una connessione specifica:

    ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 
    cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); 
    
  2. Abilita alta priorità di connessione dati mobile:

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

Per la seconda approccio è specificamente dichiarato che funziona con Android 2.2, non so se questo funziona anche nelle versioni reali. Tuttavia, per quanto ho scoperto, enableHIPRI è più o meno un'impostazione di rete nascosta, quindi preferirei il primo metodo se possibile.

0

Le reti dati 3G e WiFi non possono connettersi contemporaneamente, ma è possibile connettere contemporaneamente 3G e WiFi se il gestore dell'operatore e il framework Android cambiano anche per l'operatore. Ora alcuni operatori hanno già questa funzione, ma alcuni non possono.

0

L'utilizzo di entrambe le reti contemporaneamente non è possibile nell'app per Android ma è possibile farlo in PC.
Collega uno dal tuo router WIFI e uno dalla LAN o USB Internet Stick.
Quindi creare APp e utilizzare su PC. Se non sai come eseguire Android su PC piuttosto che google.

0

Se non sbaglio, se sono disponibili sia Wi-Fi che 3G/4G, il Wi-Fi avrà la precedenza.

Solo quando il Wi-Fi non è disponibile, passerà a 3G/4G. Ovviamente questo ha previsto che entrambi siano accesi contemporaneamente.

Invece di utilizzare un wifi privato limitando così la tua scelta potresti considerare di avere una VPN di fronte a Internet, in modo che il dispositivo si connetta alla VPN da 3G/4G e successivamente acceda ai dati se la sicurezza è la tua preoccupazione per l'uso privato Wi-Fi,.

E i client VPN sono integrati in Android e sono disponibili anche client di terze parti.

Spero che aiuti!

0

Si potrebbe voler esaminare le reti wifi ad-hoc. Si collega ai dispositivi tramite Wi-Fi anche se il droide sta già utilizzando la rete wifi per Internet (non usa lo stack ip, però).

Non confondere connessioni wifi (IEEE 802.11x) con connessioni Internet (IP). IP può essere eseguito su piccioni wifi, mobile, ethernet, DSL, dailup o homing, ma solo una rete alla volta.

Per ulteriori informazioni sulle reti wifi ad-hoc, dare un'occhiata al seguente link.

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

prega di notare che molti vettori vietano multicasting (condivisione) le loro connessioni IP. Bello.