2014-12-18 18 views
6

Desidero ottenere la larghezza di banda della connessione di rete in kbps o mbps. se il dispositivo è connesso al wifi, dovrebbe restituire la larghezza di banda della rete (velocità) e i dati mobili.Determinazione della larghezza di banda della connessione di rete (velocità) Wi-Fi e dati mobili

restituisce il tasso di capablità wifi ma voglio la velocità esatta di trasferimento dati.

public String getLinkRate() 
{ 
    WifiManager wm = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
    WifiInfo wi = wm.getConnectionInfo(); 
    return String.format("%d Mbps", wi.getLinkSpeed()); 
} 

risposta

4

Non è possibile richiedere solo queste informazioni. La tua velocità Internet è determinata e controllata dal tuo ISP, non dalla tua interfaccia di rete o dal tuo router.

Quindi l'unico modo per ottenere la velocità di connessione (corrente) è scaricare un file da una posizione abbastanza vicina e il tempo necessario per recuperare il file. Per esempio:

static final String FILE_URL = "http://www.example.com/speedtest/file.bin"; 
static final long FILE_SIZE = 5 * 1024 * 8; // 5MB in Kilobits 

long mStart, mEnd; 
Context mContext; 
URL mUrl = new URL(FILE_URL); 
HttpURLConnection mCon = (HttpURLConnection)mUrl.openConnection(); 
mCon.setChunkedStreamingMode(0); 

if(mCon.getResponseCode() == HttpURLConnection.HTTP_OK) { 
    mStart = new Date().getTime(); 

    InputStream input = mCon.getInputStream(); 
    File f = new File(mContext.getDir("temp", Context.MODE_PRIVATE), "file.bin"); 
    FileOutputStream fo = new FileOutputStream(f); 
    int read_len = 0; 

    while((read_len = input.read(buffer)) > 0) { 
     fo.write(buffer, 0, read_len); 
    } 
    fo.close(); 
    mEnd = new Date().getTime(); 
    mCon.disconnect(); 

    return FILE_SIZE/((mEnd - mStart)/1000); 
} 

Questo codice, quando sightly modificato (è necessario mContext di essere un contesto valido) ed eseguita da all'interno di un AsyncTask o di un thread di lavoro, scaricherà un file remoto e restituire la velocità in cui il file è stato scaricato in Kbps.

+0

Se è asimmetrico (come ADSL o 3G), allora avrai diverse velocità di download e upload. – jww

Problemi correlati