2011-11-25 4 views
13

Desidero avviare una connessione di rete locale utilizzando l'hotspot Wi-Fi integrato su dispositivi Android. C'è un modo per realizzarlo? E come comunicare tra due dispositivi?Come avviare una connessione di rete locale programmaticamente tramite hotspot Wi-Fi su Android?

MODIFICA: Voglio programmarlo. Quindi posso trasferire i miei dati tra dispositivi.

+0

Puoi chiarire la tua domanda. A cosa ti vuoi connettere e come? Intendi dire che desideri collegare automaticamente un dispositivo (come un PC) all'hotspot Wi-Fi del tuo telefono (ad es. Il tethering)? – brianestey

+0

Voglio scrivere un'app in grado di comunicare tra diversi dispositivi Android. (Penso che sia fino a un totale di 6 dispositivi dato che gli hotspot wifi hanno al massimo 5 client al massimo.) Ad esempio, una chat room di sottorete locale. – shiami

+0

Quindi questo sarà un server e 5 client nella rete. E può comunicare come struttura client-server. – shiami

risposta

5

Non l'ho mai fatto prima, quindi la mia risposta è tutta teorica.

Penso che quello che devi fare è dichiarare un dispositivo al server e avviare il suo hotspot manualmente con un nome noto.

Start/stop built-in Wi-Fi/USB tethering from code? (in base a questa domanda, non è possibile avviare l'hotspot in modo programmato).

Una volta impostato l'hotspot, si avvia l'app del server e si attendono le connessioni in entrata. L'app del server può mostrare l'indirizzo IP o il nome host.

Sui client, è possibile fare un semplice controllo e vedere se il nome dell'hotspot è intorno e connettersi automaticamente ad esso se lo si trova. Vedere questo link per il collegamento a una rete:

Using WifiManager to connect to a network

Per quanto riguarda la seconda domanda, come comunicare - è necessario stabilire una connessione tra i dispositivi. Per questo, è necessario l'indirizzo IP del server. La cosa più semplice da fare sarebbe mostrare l'indirizzo IP sull'interfaccia utente del server e poi inserirla manualmente sui client e premere Connetti. Stabilirebbe quindi una connessione al server su una porta conosciuta e sarà possibile inviare messaggi tra client e server.

Per riferimento, ho trovato NanoHttpd, che è un server web per Android. Utilizza ServerSocket per ascoltare le connessioni in entrata.

+2

Qualcuno ha effettivamente implementato questo, in particolare la comunicazione con la parte socket. – hrishikesh

+0

puoi postare del codice qui, se lo hai implementato? –

0

Questo aiuterà ad iniziare. link1

+3

Nel caso in cui il collegamento marcisca in futuro, dovresti includere un succo di ciò che è scritto lì. – Reno

+1

Grazie ma voglio farlo a livello di programmazione. – shiami

3

Possibili risposte:

Prima di ICS e dispositivi non radicate

Non c'è modo è possibile collegarsi a un dispositivo tramite WiFi. Non ci sono API da fare. Il Bluetooth è l'opzione migliore o l'interazione dell'utente.

Prima di ICS e dispositivi radicate

Non sono sicuro se qualcuno violato il codice, ma quando ho provato a fare una connessione automatica a un punto wifi che ho notato:

  • L'API è nascosto all'interno dell'SDK.
  • Il metodo che esegue la connessione controlla il thread che lo richiede. Se non è il thread os, genera un'eccezione.

Uso ICS

Con ICS c'è un nuovo modo per collegare dispositivi tramite WiFi chiamati Wi-Fi Direct. Ecco uno link con alcune demo.

+1

Forse ti sto fraintendendo, ma il [WifiManager] (http://developer.android.com/reference/android/net/wifi/WifiManager.html) esiste da quando l'API v1 e le sue responsabilità elencate includono la configurazione delle reti e l'estalizzazione connessioni. Se intendi dopo che si trovano sulla stessa rete e non possono connettersi l'un l'altro una volta sulla stessa rete, dai un'occhiata a [NanoHttpd] (http://elonen.iki.fi/code/nanohttpd/) che usa un ServerSocket per ascoltare le connessioni in arrivo. – brianestey

0

Se hai intenzione di sviluppare la tua applicazione per ogni singolo terminale (dispositivi), allora penso che per te la programmazione delle prese farà il trucco.

Sì, Android supporta la programmazione socket nello stesso era come la programmazione di socket Java.

1 ° tutorial di programmazione di google java socket e quindi è possibile utilizzare la stessa conoscenza in Android.

Inoltre si ricorda di includere l'autorizzazione usi internet nel manifesto, in realtà questo è qualcosa che ha mangiato il mio cervello per molto tempo :)

0

Vuoi dire che la comunicazione tra dispositivi abilitati Wi-Fi senza alcun server come p2p? in tal caso la sua diretta wifi che è supportata in ICS controlla questo http://developer.android.com/reference/android/net/wifi/p2p/package-summary.html

Prima di ICS non esiste alcuna API Android standard per la connessione wifi diretta, sebbene Galaxy S2 abbia una connessione diretta tramite wifi che utilizza API proprietarie che gli sviluppatori di terze parti non possono utilizzare.

+0

Voglio farlo con la struttura client-server. – shiami

0

Non so programmically creare wify LAN, ma è possibile creare wify LAN manualmente, allora si può fare java programma TCP/UDP, come detto da brianestey

"Per quanto riguarda la seconda domanda, come comunicare - è necessario per stabilire una connessione tra i dispositivi Per questo, è necessario l'indirizzo IP del server.La cosa più semplice da fare sarebbe mostrare l'indirizzo IP sull'interfaccia utente del server e quindi inserirla manualmente sui client e premere Connetti. quindi stabilire una connessione al server su una porta conosciuta ed è possibile inviare messaggi tra client e server. "

per il collegamento manuale seguire la procedura

  • impostazioni prendere/& reti Impostazioni hotspot wireless/Wi-Fi portatile da uno qualsiasi del telefono

  • creare nuovi hotspot e attivare il Wi-fi hotspot portatile da lì

  • collegare tutti gli altri dispositivi a quella hotspot compreso il vostro pc

  • si otterrà IP di ogni dispositivo programmically (includig pc, ma non so)