Как программно проверить скорость подключения к интернету на android?

Пользователь

от margaret , в категории: Другие , 9 месяцев назад

Как программно проверить скорость подключения к интернету на android?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от gussie.jones , 9 месяцев назад

@margaret 

Вы можете использовать библиотеку Android Network Test Library (ANTL) для проверки скорости подключения к интернету на устройствах Android. Вот пример кода, который использует эту библиотеку:

  1. Добавьте зависимость в файл build.gradle вашего проекта:
1
2
3
dependencies {
    implementation 'com.github.pedroSG94.Network-Test-Library:library:2.1.0'
}


  1. Создайте новый класс, например, с названием NetworkSpeedTest, и добавьте следующий код:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import android.os.AsyncTask;
import android.util.Log;

import com.github.pedrofelix.android.network.test.NetworkSpeedTest;
import com.github.pedrofelix.android.network.test.SpeedTestCallback;

public class NetworkSpeedTest extends AsyncTask<Void, Void, Float> {

    private static final String TAG = "NetworkSpeedTest";

    private final SpeedTestCallback speedTestCallback;

    public NetworkSpeedTest(SpeedTestCallback speedTestCallback) {
        this.speedTestCallback = speedTestCallback;
    }

    @Override
    protected Float doInBackground(Void... params) {
        Log.d(TAG, "Starting network speed test");
        NetworkSpeedTest networkSpeedTest = new NetworkSpeedTest();

        // Выполнить тест загрузки
        float downloadSpeed = networkSpeedTest.testDownloadSpeed();
        Log.d(TAG, "Download speed: " + downloadSpeed + " Mbps");

        // Выполнить тест выгрузки
        float uploadSpeed = networkSpeedTest.testUploadSpeed();
        Log.d(TAG, "Upload speed: " + uploadSpeed + " Mbps");

        return downloadSpeed;
    }

    @Override
    protected void onPostExecute(Float downloadSpeed) {
        super.onPostExecute(downloadSpeed);
        speedTestCallback.onSpeedTestCompleted(downloadSpeed);
    }
}


  1. Используйте NetworkSpeedTest в своей активности или фрагменте для запуска теста скорости. Например, в активности MainActivity:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import android.os.Bundle;
import android.util.Log;

import androidx.appcompat.app.AppCompatActivity;

import com.github.pedrofelix.android.network.test.SpeedTestCallback;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        NetworkSpeedTest networkSpeedTest = new NetworkSpeedTest(new SpeedTestCallback() {
            @Override
            public void onSpeedTestCompleted(float downloadSpeed) {
                Log.d(TAG, "Speed test completed. Download speed: " + downloadSpeed + " Mbps");
            }
        });

        networkSpeedTest.execute();
    }
}


Этот код запустит тест скорости и выведет результаты в журнал Logcat. Обратите внимание, что эта библиотека предназначена только для тестирования скорости в локальной сети и не предназначена для измерения общей скорости подключения к Интернету.

Пользователь

от stanford_mosciski , месяц назад

@margaret 

Необходимо учитывать, что данная библиотека ориентирована на тестирование скорости в локальной сети. Для измерения общей скорости подключения к интернету на Android устройствах, можно также использовать библиотеки, которые специализируются на работе с сетью. Вот некоторые другие библиотеки, которые могут быть полезны для измерения скорости подключения к интернету на устройствах Android:

  1. OkHttp - OkHttpClient
  2. Retrofit
  3. Volley
  4. Speedtest-CLI API
  5. ConnectionSpeed


Эти библиотеки предоставляют API для выполнения запросов к серверам для измерения скорости соединения. Реализация может выполняться с использованием интерфейсов, реализации колбэков или AsyncTask класса, подобно приведенному выше примеру с использованием Android Network Test Library.


Можно протестировать различные библиотеки, чтобы выбрать ту, которая лучше всего подходит для вашего проекта и требований.