Sadece bu bilgi için sorgulayamıyor. İnternet hızınız belirlenen değil, şebeke arabirimi veya yönlendirici tarafından, ISS tarafından kontrol edilir.
Dolayısıyla, (geçerli) bağlantı hızınızı alabilmenin tek yolu, bir dosyayı yeterince yakın bir yerden indirerek ve dosyayı almak için ne kadar zaman harcadığınızı belirlemektir. Örneğin: göze hitap eden modifiye zaman
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);
}
Bu kod, (eğer mContext geçerli bir bağlam olması gerekir) ve AsyncTask
veya bir iş parçacığı içinden yürütülen, hız uzak bir dosyayı indirmek ve dönecektir hangi dosya içinde Kbps içinde indirildi.
Eğer asimetrikse (ADSL veya 3G gibi), farklı indirme ve yükleme hızlarına sahip olacaksınız. – jww