2012-08-03 26 views
12

Tôi đang làm việc với một Ứng dụng có chứa các dịch vụ web.Tính tốc độ Internet trong android

Trong đó tôi cần biết trạng thái khi tốc độ Internet thấp. Làm cách nào để tìm tốc độ internet trong Android?

Ví dụ, hãy xem xét nếu tôi đang sử dụng kết nối 2Mbps trong điện thoại di động và khi nó chậm đến 50Kb/giây, tôi cần chú ý đến tình huống đó bằng cách thực hiện một Toast hoặc Alert.

Cảm ơn.

+0

điều này có thể giúp http://stackoverflow.com/questions/4429605/how-to-get-link-speed-programmatically – Calvin

Trả lời

11

Nếu bạn đang kết nối với WiFi bạn có thể tìm ra tốc độ của kết nối sử dụng WifiManager:

WifiInfo wifiInfo = wifiManger.getConnectionInfo(); 

và sau đó từ WifiInfo bạn có thể lấy tốc độ hiện tại:

int speedMbps = wifiInfo.getLinkSpeed(); 

Nếu bạn là trên 3G, tôi không nghĩ rằng có một cách tiêu chuẩn để tìm ra, có thể bạn có thể giả định tự động rằng 3G chậm.

+2

Bất kỳ cách nào cảm ơn bạn, nhưng tôi vẫn đang tìm kiếm tốc độ internet không chỉ trong wifi cũng như trong 3G, 2G. – Dhamodharan

+2

Câu trả lời này là không chính xác, bạn không thể nhận được tốc độ Internet của bạn như thế này vì nó được xác định bởi ISP của bạn, không phải bộ điều hợp WiFi hoặc bộ định tuyến của bạn – mittelmania

+0

Không có 'thư viện android' cung cấp tốc độ của mạng. 'wifiInfo.getLinkSpeed' cung cấp tốc độ tối đa của mạng mà chỉ thay đổi theo thời gian. –

6

Không có giải pháp ổn định cho điều này nhưng tôi đã tìm thấy this Mã nguồn ứng dụng có thể giúp bạn để có được tốc độ Internet.

+4

Liên kết không hoạt động. Đó là lý do tại sao bạn nên đăng mã trong câu trả lời của mình. – pomber

0

Đây là specilally để phát hiện tốc độ kết nối internet bằng facebook sdk

ConnectionQuality cq = ConnectionClassManager.getInstance().getCurrentBandwidthQuality(); 
+0

Luôn trả về UNKNOWN. –

+0

Ronak là đúng. Lib không hoạt động nữa – YingYang

+0

Điều này luôn trả về không rõ – surya

0

Đây là mã để nhận tốc độ internet của bạn khi kết nối với wifi.

WifiManager wifiManager = (WifiManager) 
    this.getSystemService(Context.WIFI_SERVICE); 

List<ScanResult> wifiList = wifiManager.getScanResults(); 
for (ScanResult scanResult : wifiList) { 
    int level = WifiManager.calculateSignalLevel(scanResult.level, 5); 
    String net=String.valueOf(level); 
    // Toast.makeText(MainActivity.this,net,Toast.LENGTH_LONG).show(); 

} 

// Level of current connection.here rssi is the value of internet speed whose value 
// can be -50,-60 and some others,you can find the speed values easily on internet. 

int rssi = wifiManager.getConnectionInfo().getRssi(); 
int level = WifiManager.calculateSignalLevel(rssi, 5); 
String net=String.valueOf(rssi); 
Toast.makeText(MainActivity.this,net,Toast.LENGTH_LONG).show(); 

// -100 is the minimum speed value of your internet. 
if(rssi < -100) { 
    slowInternet=false; 
} 
Các vấn đề liên quan