Autore Topic: Quando il segnale è scarso e connessione non trasmette.  (Letto 1143 volte)

Offline alepio

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Google+
    • 107850838
    • Mostra profilo
  • Dispositivo Android:
    SAMSUNG ACE
  • Play Store ID:
    Alessandro Piola
  • Sistema operativo:
    WIN 7
Quando il segnale è scarso e connessione non trasmette.
« il: 05 Novembre 2010, 14:33:26 CET »
0
Ciao a tutti,
volevo sottoporvi questo mio problema.
Ho realizzato una piccola APP che testa di continuo tramite APPWIDGET la presenze di alcune aree FTP.
Se la connessione avviene tutto ok, altrimenti partono gli allert.

Prima di fare ogni TEST controllo la presenza della connessione
Codice (Java): [Seleziona]
        public boolean isOnline() {
                DoG.setLog("------------------------------------------------------");
                DoG.setLog("test connessione start"+ Integer.toString(countsleep));
                Log.w(TAG_LOG,"test connessione start"+ Integer.toString(countsleep));
           
            ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo ni = cm.getActiveNetworkInfo();
           
            if(ni == null){
                if (countsleep < 3) {
                        DoG.setLog("sleep start");
                        Log.w(TAG_LOG,"sleep start");
                        try {
                                Thread.sleep(1000);
                        } catch (InterruptedException e1) {
                                // TODO Auto-generated catch block
                                e1.printStackTrace();
                        }
                        DoG.setLog("sleep stop");
                        Log.w(TAG_LOG,"sleep stop");
                        countsleep = countsleep + 1;
                        isOnline();
                }
                return false;
            }
            DoG.setLog("test connessione fine");
            Log.w(TAG_LOG,"test connesione fine");
            DoG.setLog("------------------------------------------------------");
            return ni.isConnected();
    }
Controllo che l'area FTP risponda prima di fare la connessione.
Controllo controllo, ma esiste un caso che l'applicazione mi da errore.
Il caso è questo, quando mi trovo in una zona con poca copertura il programma mi va in quella schermata che mi chiede di terminare o attendere.

Per poi darmi un null exception.

qualche idea per capire meglio se sono veramente connesso o no?
-----------------------------------------------------
Con RISPARMIO BATTERIA - Battery Saver puoi anche dimenticarti a casa il carica batteria. Inoltre con gli EXTRAS puoi configurare la navigazione e disattivare i banner pubblicitari. Battery Saver controlla in automatico lo stato dello schermo.Se è spento disattiva WIFI e NAVIGAZIONE MOBILE, per poi riaccenderle a schermo attivo.
[APP] BatterySaver - Android Developers Italia
--------

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #1 il: 05 Novembre 2010, 15:54:55 CET »
0
dove da il null?
posta il logcat, così possiamo aiutarti.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline alepio

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Google+
    • 107850838
    • Mostra profilo
  • Dispositivo Android:
    SAMSUNG ACE
  • Play Store ID:
    Alessandro Piola
  • Sistema operativo:
    WIN 7
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #2 il: 05 Novembre 2010, 15:57:46 CET »
0
Codice: [Seleziona]
11-05 14:15:30.273: ERROR/AndroidRuntime(5604): Uncaught handler: thread main exiting due to uncaught exception
11-05 14:15:30.294: ERROR/AndroidRuntime(5604): java.lang.RuntimeException: Unable to start service it.alessandropiola.ftpchecker.TestAppProvider$RandomValueService@43be0cf0 with Intent { cmp=it.alessandropiola.ftpchecker/.TestAppProvider$RandomValueService (has extras) }: java.lang.NullPointerException
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2882)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at android.app.ActivityThread.access$3500(ActivityThread.java:119)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1926)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at android.os.Looper.loop(Looper.java:123)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at android.app.ActivityThread.main(ActivityThread.java:4363)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at java.lang.reflect.Method.invokeNative(Native Method)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at java.lang.reflect.Method.invoke(Method.java:521)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at dalvik.system.NativeStart.main(Native Method)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604): Caused by: java.lang.NullPointerException
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:404)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:438)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at org.apache.commons.net.ftp.FTP.sendCommand(FTP.java:487)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at org.apache.commons.net.ftp.FTP.quit(FTP.java:699)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at org.apache.commons.net.ftp.FTPClient.logout(FTPClient.java:678)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at it.alessandropiola.ftpchecker.TestAppProvider$RandomValueService.controlloftp(TestAppProvider.java:597)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at it.alessandropiola.ftpchecker.TestAppProvider$RandomValueService.onStart(TestAppProvider.java:234)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at android.app.Service.onStartCommand(Service.java:306)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2873)
11-05 14:15:30.294: ERROR/AndroidRuntime(5604):     ... 10 more
-----------------------------------------------------
Con RISPARMIO BATTERIA - Battery Saver puoi anche dimenticarti a casa il carica batteria. Inoltre con gli EXTRAS puoi configurare la navigazione e disattivare i banner pubblicitari. Battery Saver controlla in automatico lo stato dello schermo.Se è spento disattiva WIFI e NAVIGAZIONE MOBILE, per poi riaccenderle a schermo attivo.
[APP] BatterySaver - Android Developers Italia
--------

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #3 il: 05 Novembre 2010, 16:25:01 CET »
0
TestAppProvider.java:597

cosa c'è in questa riga di codice?

azzardo un'ipotesi:

Codice (Java): [Seleziona]
            ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo ni = cm.getActiveNetworkInfo();

se getSystemService non trova il name richiesto, restituisce null.
quindi, quando invochi cm.getActiveNetworkinfo() stai invocando un metodo su un oggetto nullo.
Prova a controllare che cm non sia nul, prima.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline alepio

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Google+
    • 107850838
    • Mostra profilo
  • Dispositivo Android:
    SAMSUNG ACE
  • Play Store ID:
    Alessandro Piola
  • Sistema operativo:
    WIN 7
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #4 il: 05 Novembre 2010, 16:47:35 CET »
0
se getSystemService non trova il name richiesto, restituisce null.
quindi, quando invochi cm.getActiveNetworkinfo() stai invocando un metodo su un oggetto nullo.
Prova a controllare che cm non sia nul, prima.

in questo caso null è false!
o no?
-----------------------------------------------------
Con RISPARMIO BATTERIA - Battery Saver puoi anche dimenticarti a casa il carica batteria. Inoltre con gli EXTRAS puoi configurare la navigazione e disattivare i banner pubblicitari. Battery Saver controlla in automatico lo stato dello schermo.Se è spento disattiva WIFI e NAVIGAZIONE MOBILE, per poi riaccenderle a schermo attivo.
[APP] BatterySaver - Android Developers Italia
--------

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #5 il: 05 Novembre 2010, 17:07:25 CET »
0
?

null è null, non è un booleano.

io intendo dire:

Codice (Java): [Seleziona]
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = null;
if(cm != null) {
    ni = cm.getActiveNetworkInfo();
}

if( ni != null) {
   //servizio disponibile, quindi tutto ok

} else {
  //servizio non disponibile
}
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline alepio

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Google+
    • 107850838
    • Mostra profilo
  • Dispositivo Android:
    SAMSUNG ACE
  • Play Store ID:
    Alessandro Piola
  • Sistema operativo:
    WIN 7
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #6 il: 05 Novembre 2010, 17:19:31 CET »
0
?

null è null, non è un booleano.



Ovvio, volevo solo dire che il result con null sarà FALSE.
-----------------------------------------------------
Con RISPARMIO BATTERIA - Battery Saver puoi anche dimenticarti a casa il carica batteria. Inoltre con gli EXTRAS puoi configurare la navigazione e disattivare i banner pubblicitari. Battery Saver controlla in automatico lo stato dello schermo.Se è spento disattiva WIFI e NAVIGAZIONE MOBILE, per poi riaccenderle a schermo attivo.
[APP] BatterySaver - Android Developers Italia
--------

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #7 il: 05 Novembre 2010, 17:27:15 CET »
0
Ovvio, volevo solo dire che il result con null sarà FALSE.

AH! ora ho capito cosa volevi dire.

Beh, così ritorniamo all'inizio, cioè al mio consiglio di provare a vedere se il valore è o meno null....se dici che il result con null sarà false, stai dando per scontato che torna un valore valido.
Se non fosse questo il problema, allora cosa c'è nella riga 597 di TestAppProvider.java?
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline PreStiige

  • Nuovo arrivato
  • *
  • Post: 43
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Nexus One, Motorola Milestone.
  • Sistema operativo:
    Snow Leopard 10.6
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #8 il: 05 Novembre 2010, 22:18:31 CET »
0
Ho eliminato i post inutili.
Ora torniamo On Topic
"You think, I dev" [.cit PreStiige]

;)

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #9 il: 05 Novembre 2010, 22:38:35 CET »
0
erano discussioni da bar e andavano bene.
sposto il topic, comunque.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline alepio

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Google+
    • 107850838
    • Mostra profilo
  • Dispositivo Android:
    SAMSUNG ACE
  • Play Store ID:
    Alessandro Piola
  • Sistema operativo:
    WIN 7
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #10 il: 09 Novembre 2010, 08:55:46 CET »
0
ho sistemato un po le cose,
ma mi rimane ancora un bel dubbio (dato proprio dalla poca conosceza).

Il codice gira ma il più delle volete l'applicazione non risponde e chiede di terminare o attendere, il problema è dato dalla poca banda per i dati oppure per una lentezza nei server a rispondere.

Non saprei come procedere, qualche idea?

-----------------------------------------------------
Con RISPARMIO BATTERIA - Battery Saver puoi anche dimenticarti a casa il carica batteria. Inoltre con gli EXTRAS puoi configurare la navigazione e disattivare i banner pubblicitari. Battery Saver controlla in automatico lo stato dello schermo.Se è spento disattiva WIFI e NAVIGAZIONE MOBILE, per poi riaccenderle a schermo attivo.
[APP] BatterySaver - Android Developers Italia
--------

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #11 il: 09 Novembre 2010, 11:56:05 CET »
0
ho sistemato un po le cose,
ma mi rimane ancora un bel dubbio (dato proprio dalla poca conosceza).

Il codice gira ma il più delle volete l'applicazione non risponde e chiede di terminare o attendere, il problema è dato dalla poca banda per i dati oppure per una lentezza nei server a rispondere.

Non saprei come procedere, qualche idea?


Non esegui in un Thread o in un Task a parte? Se lo esegui nel Thread principale dell'activity, questa inevitabilmente si blocca aspettando la fine delle operazioni
Postate il LogCat LogCat LogCat LogCat LogCat

Offline alepio

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Google+
    • 107850838
    • Mostra profilo
  • Dispositivo Android:
    SAMSUNG ACE
  • Play Store ID:
    Alessandro Piola
  • Sistema operativo:
    WIN 7
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #12 il: 09 Novembre 2010, 12:11:56 CET »
0
Non esegui in un Thread o in un Task a parte? Se lo esegui nel Thread principale dell'activity, questa inevitabilmente si blocca aspettando la fine delle operazioni
Quello che non capisco del tread (a parte) e' se il codice fin tanto che esegue il tread aspetta la sua fine oppure prosegue?
-----------------------------------------------------
Con RISPARMIO BATTERIA - Battery Saver puoi anche dimenticarti a casa il carica batteria. Inoltre con gli EXTRAS puoi configurare la navigazione e disattivare i banner pubblicitari. Battery Saver controlla in automatico lo stato dello schermo.Se è spento disattiva WIFI e NAVIGAZIONE MOBILE, per poi riaccenderle a schermo attivo.
[APP] BatterySaver - Android Developers Italia
--------

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #13 il: 09 Novembre 2010, 14:09:30 CET »
0
per definizione un thread è un......thread!!! ^_^
Viene eseguito in maniera indipendente, e muore quando muore chi l'ha generato.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline alepio

  • Utente normale
  • ***
  • Post: 163
  • Respect: +3
    • Google+
    • 107850838
    • Mostra profilo
  • Dispositivo Android:
    SAMSUNG ACE
  • Play Store ID:
    Alessandro Piola
  • Sistema operativo:
    WIN 7
Re:Quando il segnale è scarso e connessione non trasmette.
« Risposta #14 il: 10 Novembre 2010, 00:10:10 CET »
0
per definizione un thread è un......thread!!! ^_^
Viene eseguito in maniera indipendente, e muore quando muore chi l'ha generato.
Ti spieghi meglio o hai qualcosa da darmi per capire meglio? :-)
-----------------------------------------------------
Con RISPARMIO BATTERIA - Battery Saver puoi anche dimenticarti a casa il carica batteria. Inoltre con gli EXTRAS puoi configurare la navigazione e disattivare i banner pubblicitari. Battery Saver controlla in automatico lo stato dello schermo.Se è spento disattiva WIFI e NAVIGAZIONE MOBILE, per poi riaccenderle a schermo attivo.
[APP] BatterySaver - Android Developers Italia
--------