Имитировать медленное подключение к Интернету на устройстве REAL?

Мне нужно протестировать мое приложение в условиях, когда даже интернет-соединение 2G не находится в полном объеме (т.е. 2 бара вместо 4, 2G).

Я предпочитаю проводить эти тесты через WiFi.

Есть ли способ (программно или иначе) сообщить ОС Android на реальном устройстве замедлить или отключить подключение к Интернету 56 Кбит/с?

Примечание. Я знаю, как сделать этот в эмуляторе . Я ищу способ сделать это на реальном устройстве.

Возможно ли это?

Ответ 1

В одном из ваших комментариев вы упомянули, что у вас есть маршрутизатор DD-WRT, который действительно представляет собой крошечный Linux-блок. Таким образом, вы можете получить доступ к команде tc:

tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit 
tc class add dev $DEV parent 1: classid 1:1 cbq rate 512kbit allot 1500 prio 5 bounded isolated 
tc filter add dev $DEV parent 1: protocol ip prio 16 u32 match ip dst 195.96.96.97 flowid 1:1

Ответ 2

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

(Когда я говорю "драйвер", я не имею в виду драйвер устройства, просто какую-то драйверную программу.)

Но вы действительно пытаетесь имитировать медленное соединение или ухудшенное и шумное соединение, которое имеет низкую эффективную скорость передачи данных?