이 정보를 쿼리 할 수는 없습니다. 인터넷 속도는 ISP가 결정하고 제어하며 네트워크 인터페이스 나 라우터는 제어하지 않습니다.
그래서 (현재) 연결 속도를 얻을 수있는 유일한 방법은 충분히 가까운 위치에서 파일을 다운로드하고 파일을 검색하는 데 걸리는 시간을 측정하는 것입니다. 예를 들어 : 전망이 좋은 수정시
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);
}
이 코드는 (당신이 mContext 유효한 상황 일 필요)와 AsyncTask
또는 작업자 스레드 내부에서 실행, 속도를 원격 파일을 다운로드 반환하는 파일의 Kbps로 다운로드되었습니다.
ADSL 또는 3G와 같이 비대칭 인 경우 다운로드 속도와 업로드 속도가 다릅니다. – jww