2016-01-18 22 views
6

Sto lavorando su un'applicazione che controlla, prima di attivare un download, che la connessione è affidabile (in pratica la connessione deve essere una connessione Wi-Fi infrastrutture e non pacchetto dati), ma nel caso in cui l'utente è oCome rilevare se il sistema è connesso ad un wifi ad hoc o infrastruttura?

  1. utilizzando un rete ad hoc, o
  2. la connessione Internet del dispositivo mobile come WAP

e quindi il collegamento e avviare il download sul desktop, è ancora indesiderato. C'è un modo per rilevare se alcune connessioni wifi non sono effettivamente ad hoc o utilizzando il WAP del telefono?

+0

L'utilizzo di un dispositivo mobile come hotspot è anche infrastruttura. Ad-Hoc è una connessione solo tra due dispositivi, ma il telefono è il WAP quando viene utilizzato come hotspot poiché più client possono connettersi ad esso. –

+0

grazie RON per correggermi su questo, ora che questo è chiaro, modifico la domanda di conseguenza – rai

+0

Se lo stai facendo da un desktop, non penso che tu possa capire la differenza tra una normale infrastruttura WAP o un telefono come un hotspot WAP, poiché il telefono è solo un'altra infrastruttura WAP. Una connessione ad hoc non dovrebbe avere accesso a Internet, quindi è facile. –

risposta

-2

per verificare se il suo collegato al WiFi:

ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo wifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 

if (wifi.isConnected()) { 
    // is connected to wifi 
} 

non dimenticare di aggiungere il permesso a manifesto:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 
+0

questo non distinguerà tra wifi dal router e ad hoc – aasthetic

3

è possibile rilevare ...

  1. ... la rete ad-hoc controllando se è effettivamente possibile access a server on the internet - in genere, Ad-Hoc non include la connettività completa, quindi se si dispone di rete ma non di accesso a Internet, un download non funzionerà
  2. ... l'utilizzo di un punto di accesso telefonico misurando lo round-trip time di una richiesta - di solito sono piuttosto alti sulla banda larga mobile.

    long start = System.nanoTime(); 
    HttpGet requestForTest = new HttpGet("http://m.google.com"); 
    try { 
        new DefaultHttpClient().execute(requestForTest); // can last... 
    } 
    catch (Exception e) { 
    } 
    long rtt = System.nanoTime() - start; 
    // ... evaluate the rtt 
    

    Questa tabella può essere rilevante per la valutazione (source)

    Generation | Data rate  | Latency 
    2G   | 100–400 Kbit/s | 300–1000 ms 
    3G   | 0.5–5 Mbit/s | 100–500 ms 
    4G   | 1–50 Mbit/s | < 100 ms 
    

A parte queste due opzioni: il motivo per cui si fa espressamente bannate Ad-Hoc o banda larga mobile? Non dovresti neanche

  • divieto nulla e lasciare che l'utente a decidere se vogliono aspettare secoli

o

  • ban tutti i collegamenti lenti, cioè il monitoraggio della velocità di trasferimento per un un paio di secondi e annullare automaticamente il download se è troppo piccolo
1

In sostanza, si sta scrivendo un'applicazione su l ayer 7 del modello ISO/OSI e si desidera conoscere i contenuti del livello 2. Ciò non è esplicitamente come dovrebbe funzionare.

  • Se il download è grande, è necessario proteggere l'utente dalla masterizzazione del volume di dati del contratto mobile e avvisare l'utente prima di eseguire il download.
    Questo è anche il modo in cui Google Play Store gestisce i download superiori a pochi MByte.
  • potresti avere un'opzione nelle preferenze della tua app per consentire i download solo quando su Wi-Fi in modo che gli utenti possano essere sicuri di salvare il loro piano dati.
  • Se non si desidera assolutamente che un utente scarichi i file sulla rete mobile, consenti solo il Wi-Fi e quindi esegui un pind e un download di un file da 1 MB per misurare la larghezza di banda prima di decidere se il download effettivo richiederà per sempre o no.

Tutto il resto deve essere gestito dal sistema e non deve preoccuparti.

+0

Come può il desktop sapere che il Wi-Fi è tramite il cellulare? Tutto ciò che sa è che è connesso al Wi-Fi. –

+0

Il desktop non dovrebbe sapere. Volere sapere come un dispositivo è connesso al livello 2 è solo una scusa zoppa per voler avere il controllo su come viene utilizzata l'app (sia essa desktop o mobile). Se la tua app non è in grado di gestire connessioni lente/cattive, correggi la tua app, non costringendo l'utente a ottenere più larghezza di banda. – TabascoEye

+0

Ma questa è la domanda. Il desktop deve sapere se è connesso a una normale infrastruttura o a un hotspot mobile. Non ho fatto la domanda, ma questa è la domanda a cui l'OP ha bisogno di rispondere. Non credo che il desktop possa dire in modo affidabile la differenza –

Problemi correlati