Вычисление скорости интернета в android
Я работаю с приложением, которое содержит веб-сервисы.
В том, что мне нужно знать статус, когда скорость Интернета низкая. Как найти уровень интернет-скорости в Android?
Например, рассмотрим, использую ли я подключение 2 Мбит/с на своем мобильном телефоне, и когда он замедляется до 50 Кбит/с, мне нужно заметить эту ситуацию, сделав Toast или Alert.
Спасибо.
Ответы
Ответ 1
Если вы подключены к WiFi
, вы можете найти скорость соединения с помощью WifiManager
:
WifiInfo wifiInfo = wifiManger.getConnectionInfo();
а затем из WifiInfo
вы можете получить текущую скорость:
int speedMbps = wifiInfo.getLinkSpeed();
Если вы на 3G, я не думаю, что есть стандартный способ узнать, возможно, вы можете автоматически предположить, что 3G медленный.
Ответ 2
Для этого нет стабильного решения, но я нашел этот исходный код приложения, который может помочь вам, чтобы получить скорость Интернета.
Ответ 3
Это специально для определения скорости подключения к Интернету
facebook sdk
ConnectionQuality cq = ConnectionClassManager.getInstance().getCurrentBandwidthQuality();
Ответ 4
Это код для получения скорости вашего интернета при подключении к Wi-Fi.
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;
}