2014-12-18 5 views
6

Ich möchte Netzwerkverbindungsbandbreite in kbps oder Mbps bekommen. Wenn das Gerät mit WLAN verbunden ist, sollte es die Netzwerkbandbreite (Geschwindigkeit) sowie mobile Daten zurückgeben.Bestimmen Sie die Netzwerkverbindungsbandbreite (Geschwindigkeit) wifi und mobile Daten

wird es wifi capacablity rate zurückgeben, aber ich will genaue Datenübertragungsrate.

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

Antwort

4

Sie können nicht nur nach diesen Informationen suchen. Ihre Internetgeschwindigkeit wird von Ihrem ISP bestimmt und kontrolliert, nicht von Ihrer Netzwerkschnittstelle oder Ihrem Router.

Der einzige Weg, wie Sie Ihre (aktuelle) Verbindungsgeschwindigkeit erreichen können, ist das Herunterladen einer Datei von einem nahegelegenen Ort und das Timing, wie lange es dauert, die Datei abzurufen. Zum Beispiel:

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); 
} 

Dieser Code, wenn sightly geändert (Sie müssen mContext ein gültiger Kontext sein) und aus dem Inneren eines AsyncTask oder einem Worker-Thread ausgeführt wird, wird eine Remote-Datei herunterladen und senden Sie die Geschwindigkeit, in der die Datei wurde in Kbps heruntergeladen.

+0

Wenn es asymmetrisch (wie ADSL oder 3G), dann haben Sie unterschiedliche Download-und Upload-Geschwindigkeiten. – jww