Autore Topic: Timeout connessione dati  (Letto 1266 volte)

Offline guidocx84

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Timeout connessione dati
« il: 26 Agosto 2011, 09:45:42 CEST »
0
Ciao a tutti,
vi vorrei chiedere un consiglio. Probabilmente ci saranno vari metodi per fare la cosa che sto per dirvi ma volevo avere qualche opinione dal voi circa quello che ritenete più conveniente.
Ho un'activity composta da un unico button il quale, una volta premuto, avvia il download di un file da un server locale al quale mi connetto aprendo una socket. Per quanto riguarda la connessione dati che utilizzo, vado in VPN tramite il 3G o il WiFi. E' indifferente.
Quello che volevo chiedervi è questo. Siccome ultimato il download di questo file, vorrei passare direttamente ad una successiva activity che sfrutterà questo file per i suoi compiti, come faccio ad inserire una sorta di timeout superato il quale passo avanti anche se non ho scaricato il file a causa della mancata copertura WiFi o 3G?
Mi spiego meglio... questo file sarà inizialmente presente nel cellulare. Dopodiché scaricarlo permetterà di soltanto di tenerlo aggiornato. Ma se non fosse possibile scaricarlo, dovrei comunque permettere l'accesso all'activity successiva, che semplicemente eseguirà il suo compito con un file più vecchio e non aggiornato (che per quel che devo fare può non essere un problema). Dato che in alcuni casi la copertura Wi-Fi e 3G può non essere presente, vorrei un timeout per non lasciare in stallo l'applicazione, e passare all'activity successiva anche se il download non è stato possibile per l'assenza delle due tipologie di connessione. Il timeout naturalmente deve essere opportunamente definito perché deve dare il tempo, nel caso di presenza di copertura, di scaricare il file dal server (si tratta comunque di un file di pochi kilobyte...). Cosa mi suggerite di fare?
Grazie mille a tutti!!  ;-)

Offline liuk78

  • Utente junior
  • **
  • Post: 73
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Timeout connessione dati
« Risposta #1 il: 26 Agosto 2011, 09:54:31 CEST »
0
Se non ho capito male ti basta controllare prima se esiste sul telefono una connessione attiva.

http://stackoverflow.com/questions/1560788/how-to-check-internet-access-on-android-inetaddress-never-timeouts

Ho preso un pezzo di codice, vedi se ti può essere utile

Codice (Java): [Seleziona]
public boolean isOnline() {
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo netInfo = cm.getActiveNetworkInfo();
    if (netInfo != null && netInfo.isConnectedOrConnecting()) {
        return true;
    }
    return false;
}

Offline guidocx84

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Re:Timeout connessione dati
« Risposta #2 il: 26 Agosto 2011, 10:06:14 CEST »
0
Ciao!! Grazie mille per la risposta!! Altro che utile... utilissima!!  ;-)
Ok.. la tua strategia in effetti potrebbe essere la migliore.. così non devo impostare timout e posso scaricare file grandi a piacere senza dover stimare il tempo di download e reimpostare il timeout (sviluppi futuri..).
Praticamente se non c'è connessione attiva io lo faccio andare alla schermata dopo. Se c'è connessione attiva gli faccio scaricare i file. Alcuni dubbi però: per quanto riguarda il Wi-Fi, se entro in area di copertura di un AP del quale ho salvato le credenziali, il cellulare si connette automaticamente. Quindi se verifico la presenza di connessione la trovo e posso scaricare il file.
La connessione dati 3G però non è "in standby"? Cioè, non si connette solo quando c'è una richiesta? Forse (spero di non dire una cavolata), potrei inserire prima la richiesta di apertura socket e poi questa verifica di connessione? Che ne dici? Può creare problemi?
Grazie mille!!!!!

Offline liuk78

  • Utente junior
  • **
  • Post: 73
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Timeout connessione dati
« Risposta #3 il: 26 Agosto 2011, 10:37:14 CEST »
0
molto probabilmente la risposta alla tua domanda la puoi trovare qui

http://developer.android.com/reference/android/net/ConnectivityManager.html

La classe ConnectivityManager gestisce tutti i tipi di connessione

Offline guidocx84

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Re:Timeout connessione dati
« Risposta #4 il: 26 Agosto 2011, 11:02:31 CEST »
0
Ok grazie! Ci darò una bella occhiata.
Tra l'altro ho scoperto un altro possibile problema. Io della VPN ho bisogno. Se cascano entrambe le connessioni (Wi-Fi e 3G) la VPN va giù e poi non si riattiva automaticamente come vorrei che facesse... anche se le connessioni fossero disponibili in un secondo momento, non potrei comunque scaricare il file dal server se in precedenza le connessioni erano cascate entrambe... vorrei evitare di dover riattivare a mano tutte le volte la VPN.. ma il "connetti automaticamente" lo vedo più come un problema a livello di sistema operativo che di programmazione app... che ne dici? grazie!

Offline liuk78

  • Utente junior
  • **
  • Post: 73
  • Respect: +5
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Timeout connessione dati
« Risposta #5 il: 26 Agosto 2011, 11:09:25 CEST »
0
Non saprei che dirti per questo, se la connessione VPN ti serve SEMPRE non appena hai connessione disponibile allora puoi provare a fare app che verifichi ogni tot di tempo se c'è connessione attiva e attivi VPN in caso positivo.
Non so quanto ti convenga o quanto sia performante però.
Forse è meglio aspettare qualcuno più esperto

Offline guidocx84

  • Utente junior
  • **
  • Post: 68
  • Respect: 0
    • Mostra profilo
Re:Timeout connessione dati
« Risposta #6 il: 26 Agosto 2011, 11:13:18 CEST »
0
Ok.. cerco qualche soluzione a giro per la VPN.. se non trovo niente apro un nuovo topic perché qui si è parlato d'altro... grazie!! A presto!