2016-07-01 40 views
12

Sto costruendo un'app che utilizza AsyncTask per visualizzare una barra di avanzamento quando sta eseguendo operazioni di rete (Google translate). Tuttavia, il problema è che non riesco a capire se funzioni perché la rete è troppo veloce e termina l'esecuzione dell'operazione non appena la avvio. Quindi c'è un modo per simulare una rete lenta in modo che io possa dire se la barra di avanzamento verrà effettivamente eseguita (visibile) quando è in attesa che l'operazione venga completata? Ho trovato opzioni di rete durante la creazione di un emulatore Android. Tuttavia, ci sono così tante abbreviazioni che ho ancora difficoltà a capire cosa indica una connessione di rete lenta e non sono ancora sicuro se è così che dovrei impostare una connessione di rete lenta.Simula rete lenta su simulatore Android

Grazie in anticipo!

+1

Quale sistema operativo si utilizza per l'emulatore? – Anessence

+0

Sto usando Android –

+0

OSX o Windows? – Anessence

risposta

19

L'emulatore consente di simulare diverse condizioni della rete. È possibile approssimare la velocità di rete per diversi protocolli di rete, oppure è possibile specificare Full, che trasferisce i dati alla velocità consentita dal computer.

Specificare un protocollo di rete è sempre più lento di Pieno. È inoltre possibile specificare lo stato della voce e della rete dati, ad esempio il roaming. I valori predefiniti sono impostati nell'AVD.

Selezionare un tipo di rete:

  • GSM - Global System for Mobile Communications
  • HSCSD - High-Speed ​​Circuit-Switched dati
  • GPRS - Packet Generico Radio Service
  • EDGE - Enhanced Data tariffe per GSM Evolution
  • UMTS - Universal Mobile Telecommunications System
  • HSPDA - PA in downlink ad alta velocità cket accesso
  • (predefinito)

GPRS (114Kbps) < EGDE (368Kbps) < 3G (3.1Mbps) < HSDPA (14Mbps) < HSPA + (168Mbps) < 4G/LTE (299.6 Mbps)

Selezionare uno stato Voce, Dati aggiornati, o entrambi:

  • casa (default)
  • Roaming
  • Ricerca
  • negato (chiamate di emergenza solo)
  • non registrato (off

Per ulteriori informazioni, vedere https://developer.android.com/studio/run/emulator.html#extended

+0

Grazie! In precedenza ero in questa pagina, ma anche dopo aver cercato i tipi di rete, non so ancora quale sia il più lento. Come ho provato, sembra ancora abbastanza veloce. –

2

Con telnet sulla riga di comando è possibile connettersi all'emulatore e modificare la velocità di rete del dispositivo.

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

È possibile ottenere la porta per il dispositivo dalla parte superiore della finestra dell'emulatore.

È possibile utilizzare una delle velocità nel android docs here. Id consiglio edge per basse velocità

Se sei su Windows dovrai configurare telnet, puoi trovare le indicazioni per farlo in this SO post.

+0

Grazie! Quindi eseguo questi comandi dopo aver lanciato la mia app nell'emulatore? E per la velocità della rete, quali parametri dovrei dare per renderlo lento? Grazie! –

+0

Sì, basta eseguire questi due comandi nella riga di comando una volta che l'emulatore è in esecuzione (non è necessario che l'app sia attiva). Per renderlo lento, ti consiglio di usare "edge" come velocità. Sembra che il collegamento alle velocità non sia formattato correttamente, quindi ti consiglio di risolvere il problema con –

3

In OS X è possibile utilizzare Network Link Conditioner, molto utile. Ecco un link su come usarlo e come installarlo. Influirà su tutti i programmi che usano la rete.

http://nshipster.com/network-link-conditioner/ enter image description here

Inoltre è possibile inviare tutto il traffico di proxy e utilizzare strozzamento. Ho usato Charles (commerciale, di 30 giorni di prova gratuita) https://www.charlesproxy.com/

+0

. Funziona anche con gli emulatori Android? o va bene visto che sto eseguendo il mio emulatore Android su un Mac? –

+0

Emula cattiva rete per tutto ciò che è in esecuzione in OSX. Lo stesso per il proxy. – Anessence