Как я могу проверить потребление сети моим Android-приложением?

Мне нужно проверить интернет-потребление моего Android-приложения. В моем приложении у меня есть множество вызываемых API веб-сервисов.

Я хочу знать, насколько полно мое приложение потребляет Интернет в КБ / МБ.

Как я могу это проверить? Есть ли инструмент, чтобы проверить это?

5 ответов

Решение

Android Studio 2.0 Представляем новое Network раздел в Android Monitor который может помочь вам с вашей проблемой.

введите описание изображения здесь

Tx == Transmit Bytes Rx == Receive Bytes

Есть три способа...

  1. Вы можете просмотреть в устройстве / эмуляторе. Перейдите в Настройки -> Использование данных и найдите свое приложение в списке. Введите описание изображения здесь

  2. В Eclipse выберите DDMS (в перспективе) -> выберите пакет из списка "Устройства" (слева) -> нажмите вкладку "Статистика сети" -> нажмите "Пуск". введите описание изображения здесь

  3. Как уже было сказано, в Android Studio перейдите в Android Monitor (нижняя вкладка) -> Network (вкладка) -> найдите Tx (передача данных) / Rx (получение данных) Введите описание изображения здесь

Для просмотра вы можете проверить это на мониторе, как упомянуто MD.

Для хранения вы можете сделать это программно

    int UID = android.os.Process.myUid();
    rxBytes += getUidRxBytes(UID);
    txBytes += getUidTxBytes(UID);
    /**
     * Read UID Rx Bytes
     *
     * @param uid
     * @return rxBytes
     */
    public Long getUidRxBytes(int uid) {
        BufferedReader reader;
        Long rxBytes = 0L;
        try {
            reader = new BufferedReader(new FileReader("/proc/uid_stat/" + uid
                    + "/tcp_rcv"));
            rxBytes = Long.parseLong(reader.readLine());
            reader.close();
        }
        catch (FileNotFoundException e) {
            rxBytes = TrafficStats.getUidRxBytes(uid);
            //e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        return rxBytes;
    }

    /**
     * Read UID Tx Bytes
     *
     * @param uid
     * @return txBytes
     */
    public Long getUidTxBytes(int uid) {
        BufferedReader reader;
        Long txBytes = 0L;
        try {
            reader = new BufferedReader(new FileReader("/proc/uid_stat/" + uid
                    + "/tcp_snd"));
            txBytes = Long.parseLong(reader.readLine());
            reader.close();
        }
        catch (FileNotFoundException e) {
            txBytes = TrafficStats.getUidTxBytes(uid);
            //e.printStackTrace();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        return txBytes;
    }
}

Если вы хотите проверить сетевое потребление приложений с помощью каких-либо инструментов, используйте Android Studio 2.0, который вы видите. Смотрите ниже, как его использовать

Сетевой монитор

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

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

Отображение запущенного приложения в сетевом мониторе

Следуй этим шагам:

  1. Подключите аппаратное устройство.
  2. Дисплей Android Monitor.
  3. Нажмите вкладку Сеть.
  4. Откройте проект приложения и запустите его на аппаратном устройстве.
  5. Чтобы запустить сетевой монитор, щелкните значок "Пауза", чтобы отменить выбор.

Введите описание изображения здесь

Сетевой монитор складывает количество времени, которое требуется устройству для передачи и получения килобайт данных. Ось Y указана в килобайтах в секунду. Ось X начинается с секунд, а затем минут и секунд и т. Д.

  1. Чтобы остановить сетевой монитор, снова щелкните значок "Пауза", чтобы выбрать его.

ИЛИ ЖЕ

Вы хотите отобразить потребление сети с собственным приложением, а затем использовать приведенный ниже пример

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TextView
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:textSize="16sp"
         android:textStyle="bold"
         android:gravity="center"
         android:paddingBottom="20dip"
         android:text="Traffic Stats Demo" />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:textColor="#00ff00"
        android:gravity="center"
        android:text="Transmit Bytes" />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:gravity="center"
        android:text="0"
        android:id="@+id/TX"/>
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:textColor="#ff0000"
        android:gravity="center"
        android:text="Receive Bytes" />
    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="14sp"
        android:gravity="center"
        android:text="0"
        android:id="@+id/RX"/>
 </LinearLayout>

Main.java

 import android.app.Activity;
 import android.app.AlertDialog;
 import android.net.TrafficStats;
 import android.os.Bundle;
 import android.os.Handler;
 import android.widget.TextView;

 public class Main extends Activity {
     private Handler mHandler = new Handler();
     private long mStartRX = 0;
     private long mStartTX = 0;

     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         mStartRX = TrafficStats.getTotalRxBytes();
         mStartTX = TrafficStats.getTotalTxBytes();
         if (mStartRX == TrafficStats.UNSUPPORTED || mStartTX == TrafficStats.UNSUPPORTED) {
              AlertDialog.Builder alert = new AlertDialog.Builder(this);
              alert.setTitle("Uh Oh!");
              alert.setMessage("Your device does not support traffic stat monitoring.");
              alert.show();
         }
         else {
             mHandler.postDelayed(mRunnable, 1000);
         }
     }

     private final Runnable mRunnable = new Runnable() {
         public void run() {
              TextView RX = (TextView)findViewById(R.id.RX);
              TextView TX = (TextView)findViewById(R.id.TX);
              long rxBytes = TrafficStats.getTotalRxBytes() - mStartRX;
              RX.setText(Long.toString(rxBytes));
              long txBytes = TrafficStats.getTotalTxBytes() - mStartTX;
              TX.setText(Long.toString(txBytes));
              mHandler.postDelayed(mRunnable, 1000);
         }
     };
 }

Посмотрите: Android Monitor.

В этом есть много тем, которые вы можете отслеживать.

Вы найдете сетевой монитор.

Отображение запущенного приложения в сетевом мониторе:

Следуй этим шагам:

  • Подключите аппаратное устройство.
  • Дисплей Android Monitor.
  • Нажмите вкладку Сеть.
  • Откройте проект приложения и запустите его на аппаратном устройстве.
  • Чтобы запустить сетевой монитор, щелкните значок "Пауза", чтобы отменить выбор.

Любой сетевой трафик начинает появляться в сетевом мониторе:

Введите описание изображения здесь

Сетевой монитор складывает количество времени, которое требуется устройству для передачи и получения килобайт данных. Ось Y указана в килобайтах в секунду. Ось X начинается с секунд, а затем минут и секунд и т. Д.

  • Чтобы остановить сетевой монитор, снова щелкните значок "Пауза", чтобы выбрать его.

Ссылка: Android-монитор

Другие вопросы по тегам