2015-09-04 3 views
0

У меня разработано приложение для Android, и он отлично работает при использовании WiFi. Он также работает, когда есть надлежащая сотовая сеть. Но проблема в том, что сигнал слабый (все еще активное соединение), тогда возникает проблема.обнаружить медленное подключение к Интернету в android

Я использовал загрузчик, пока данные не будут загружены в Activity. Теперь, как определить медленное подключение к Интернету, потому что я должен дать пользователю тост информацию о том, что подключение к интернету происходит медленно. Может ли кто-нибудь помочь в этом.?

+0

Может быть отслеживание данных в секунду – Nabin

+0

Я не знаю, как вы. Возможно, вы предоставили фрагмент кода для этого же? – Bunny

+0

Проверьте этот https://github.com/facebook/network-connection-class, если он помогает – Raghunandan

ответ

2

Вы можете получить всю необходимую информацию о вас, используя TrafficStats пакета: android.net. Затем вы обнаруживаете объем данных, передаваемых в секунду, что дает скорость вас связующей сети

trafficStats = new TrafficStats(); 
    uid = android.os.Process.myUid(); 
    if(trafficStats.getUidRxBytes(uid) != trafficStats.UNSUPPORTED) { 
     initialBytesCount = trafficStats.getUidTxBytes(uid)/1024; 
    } else{ 
     uid = -1; 
    } 

    startTime = System.currentTimeMillis(); 
    TimerTask task = new TimerTask() { 
     @Override 
     public void run() { 
      linkSpeed = trafficStats.getUidTxBytes(uid)/1024 - initialBytesCount; 
      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        transferRate = 0; 
        long recordedTime = (System.currentTimeMillis() - startTime)/1000; 
        try { 
         transferRate = linkSpeed/recordedTime; 
         Log.i("TransferRate", transferRate + ""); 
        }catch (Exception e){ 

        } 
       } 
      }); 
     } 
    }; 
    netWorkSpeedTimer = new Timer(); 
    netWorkSpeedTimer.scheduleAtFixedRate(task, 1000, 1000); 
+0

Спасибо за ответ arjun ... но как использовать это, то есть какой параметр я использую из этого кода, чтобы определить медленное подключение к Интернету. Я использую ответ HTTP-запроса, так что такое отношение? – Bunny

+0

'transferRate' дает скорость ссылки в kbps, из которой вы можете определить медленную связь – arjun

0

Если пользователь имеет стабильное соединение, и вы просто хотите проверить, если подключение к медленному для ваших целей, вы могли бы реализовать простой speedtest , загрузив тестовый файл с вашего сервера и остановив время, потраченное. Таким образом, вы можете установить максимальное количество времени, которое необходимо загрузить вашему файлу, и если этот максимум превышен, соединение вашего клиента происходит слишком медленно.

Смежные вопросы