Имитировать медленную сеть на Android-симуляторе

Я создаю приложение, которое использует AsyncTask для отображения индикатора выполнения при выполнении сетевой операции (Google translate). Однако проблема заключается в том, что я не могу сказать, работает ли она с сети слишком быстро и завершает работу, как только я ее запускаю. Итак, есть ли способ имитировать медленную сеть, чтобы я мог определить, будет ли индикатор выполнения работать (видимым), когда он ждет завершения операции? При создании эмулятора Android я столкнулся с сетевыми опциями. Однако есть так много аббревиатур, что мне все еще трудно понять, что указывает на медленное сетевое соединение, и я все еще не уверен, что именно так я должен установить медленное сетевое подключение.

Спасибо заранее!

Ответ 1

Эмулятор позволяет моделировать различные сетевые условия. Вы можете аппроксимировать скорость сети для разных сетевых протоколов или указать Full, который передает данные так же быстро, как позволяет ваш компьютер.

Задание сетевого протокола всегда медленнее, чем Full. Вы также можете указать статус передачи голоса и данных, например роуминг. Значения по умолчанию устанавливаются в AVD.

Выберите тип сети:

  • GSM - глобальная система мобильной связи
  • HSCSD - Высокоскоростные данные с коммутацией каналов
  • GPRS - услуга общей пакетной радиосвязи
  • EDGE - Расширенные скорости передачи данных для эволюции GSM
  • UMTS - универсальная система мобильной связи
  • HSPDA - высокоскоростной пакетный доступ по нисходящей линии связи
  • Полный (по умолчанию)

GPRS (114 Кбит/с) EGDE (368 Кбит/с) 3G (3,1 Мбит/с) HSDPA (14 Мбит/с) HSPA + (168 Мбит/с) 4G/LTE (299.6Mbps)

Выберите статус голоса, статус данных или оба:

  • Домой (по умолчанию)
  • Роуминг
  • Поиск
  • Отклонено (только экстренные вызовы)
  • Незарегистрированный (off)

Для получения дополнительной информации см. https://developer.android.com/studio/run/emulator.html#extended

Ответ 2

В OS X вы можете использовать Network Link Conditioner, очень полезно. Вот ссылка, как его использовать и как установить. Это повлияет на все программы, использующие сеть.

http://nshipster.com/network-link-conditioner/ введите описание изображения здесь

Также вы можете отправить весь трафик на прокси-сервер и использовать дросселирование. Я использовал Charles (коммерческий, 30 дней бесплатной пробной версии) https://www.charlesproxy.com/

Ответ 3

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

telnet localhost <<port of device>>
network speed <<network speed, ex: edge, full>>

Вы можете получить порт для устройства в верхней части окна эмулятора.

Вы можете использовать любую из скоростей в android docs здесь. Id рекомендует край для медленных скоростей

Если вы находитесь в окнах, вам нужно будет установить telnet, вы можете найти инструкции, чтобы сделать это в этом сообщении SO.