Autore Topic: Problema con activity controllo connessione  (Letto 482 volte)

Offline lucacali87

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg dual
  • Sistema operativo:
    windows seven
Problema con activity controllo connessione
« il: 03 Luglio 2013, 12:04:05 CEST »
0
Salve ragazzi, sto sbattendo la testa su un problema semplice ma che non riesco a risolvere.In pratica cliccando il bottone GPS avvia la connessione che comporta una progress dialog ad intrattenere l'utente.
Il problema è che all'inzio controllo gps e connessione, se sono attivi nessun problema, però se li devo attivare io non parte l'animazione, in pratica non entra nell'if
Sapreste aiutarmi?

Codice (Java): [Seleziona]
protected void onCreate(Bundle savedInstanceState) {

                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_posizione);
                context=this;
                // Avvio della logica di localizzazione
                editCitta=(EditText)findViewById(R.id.editTextCitta);
                editLuogo=(EditText)findViewById(R.id.editTextLuogo);
                button=(Button)findViewById(R.id.buttonGps);
                button.setOnClickListener(new OnClickListener() {

                        @SuppressLint("HandlerLeak")
                        public void onClick(View v) {
                                //Timing scadenza ricezione GPS
                                cdt = new CountDownTimer(countdownTime,1000){
                                        @Override
                                        public void onFinish() {
                                                AlertDialog.Builder builder = new AlertDialog.Builder(PosizioneActivity.this);
                                                builder.setTitle("ERRORE GPS");
                                                builder.setMessage("Il GPS non riesce a rilevare la posizione, si consiglia di impostarla manualmente!!!");
                                                builder.setCancelable(false);
                                                builder.setPositiveButton("Chiudi",new DialogInterface.OnClickListener(){
                                                        public void onClick(DialogInterface dialog, int id){
                                                                dialog.dismiss();
                                                                progressDialog.dismiss();
                                                                finish();
                                                                Intent intent=new Intent(getApplicationContext(), PosizioneActivity.class);                            
                                                                startActivity(intent); //facciamo partire la seconda activity

                                                        }
                                                });
                                                builder.show();

                                        }

                                        @Override
                                        public void onTick(long millisUntilFinished) {
                                                // TODO Auto-generated method stub

                                        }
                                }.start();


                                localizzazione = new Localizzazione(PosizioneActivity.this);
                               
                                //avvio animazione e rilevamento
                                PosizioneRilevamento();
                        }//termina listner


                });//termina onclick
      }


               


        public void PosizioneRilevamento(){
               
                if(verificaGpsAttivo() & verificaInternetAttivo() )
                {
                        Log.i("Funzionamento","avvio animazione");
                        /
                        //Finestra che indica il caricamento del gps
                        progressDialog=ProgressDialog.show(PosizioneActivity.this,"","Localizzazione in corso...");

                        //Rilevare posizione

                        // Thread utilizzato per attendere il rilevamento delle informazioni
                        // sulla posizione corrente dell'utente
                        new Thread() {

                                @Override
                                public void run() {

                                        /* Attendo che sia rilevata una nuova posizione */
                                        while (!localizzazione.isInfoPosizioneRilevata()) {
                                        }

                                        /*
                                         * Creo il messagio e lo invio permettendo al Thread di
                                         * comunicare all'esterno
                                         */

                                        // per ottenere un'istanza della classe Message si usa
                                        // l'apposito metodo della classe Handler obtainMessage()
                                        Message msg = handlerPosizioneRilevata.obtainMessage();
                                        // L'informazione vera e propria viene inserita in un Bundle che
                                        // non è altro che una mappa di stringhe del tipo chiave/valore
                                        Bundle b = new Bundle();
                                        b.putBoolean("rilevato", true);
                                        msg.setData(b);
                                        handlerPosizioneRilevata.sendMessage(msg);
                                }

                        }.start();
                        // main tread
                        // Handler che gestisce i messaggi ricevuti dal Thread
                        handlerPosizioneRilevata = new Handler() {

                                @Override
                                public void handleMessage(Message msg) {

                                        if (msg.getData().getBoolean("rilevato")) {
                                                editCitta.setEnabled(false);
                                                editCitta.setClickable(false);
                                                editCitta.setFocusable(false);
                                                editLuogo.setEnabled(false);
                                                editLuogo.setClickable(false);
                                                editLuogo.setFocusable(false);

                                                citta=localizzazione.getCitta();
                                                indirizzo=localizzazione.getIndirizzo();
                                                //chiudere messaggio di ricezione gps
                                                progressDialog.dismiss();
                                                cdt.cancel();
                                                //messaggio posizione acquisita
                                                toast=Toast.makeText(PosizioneActivity.this,citta +" "+ indirizzo,Toast.LENGTH_SHORT);
                                                toast.show();

                                                automatico=true;
                                        }

                                }

                        };
                }
               
        }



        private boolean verificaGpsAttivo() {
                final AlertDialog.Builder gpsAlertBuilder = new AlertDialog.Builder(context);
                if (!localizzazione.isGpsAttivo()) {

                        gpsAlertBuilder.setIcon(R.drawable.attenzione);
                        gpsAlertBuilder.setTitle("Attivazione");
                        gpsAlertBuilder
                        .setMessage("E' necessario attivare GPS e connessione internet");
                        gpsAlertBuilder.setCancelable(false);
                        gpsAlertBuilder.setPositiveButton("Attiva",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        startActivityForResult(
                                                        new Intent(
                                                                        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS),

                                                                        0);
                                        button.setEnabled(false);
                                        button.setClickable(false);
                                        button.setFocusable(false);
                                        //PosizioneRilevamento();

                                }
                        });

                        gpsAlertBuilder.setNegativeButton("Annulla",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        //System.exit(0);      
                                }
                        });
                        AlertDialog gpsAlert = gpsAlertBuilder.create();
                        gpsAlert.show();
                        return false;
                }
                //Fine messaggio attivazione
                //else return true;
                else return true;

        }




        /**
         * Controlla se il terminale è connesso in wifi
         * @param cm  Context.getSystemService(Context.CONNECTIVITY_SERVICE)
         * @return
         */

        public static boolean isConnectedWifi(ConnectivityManager cm) {
                NetworkInfo ni= cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
                return ni.isConnected();
        }

        /**
         * Controlla se il terminale è connesso in 3G
         * @param cm Context.getSystemService(Context.CONNECTIVITY_SERVICE)
         * @return
         */

        public static boolean isConnected3G(ConnectivityManager cm) {
                NetworkInfo ni= cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
                return ni.isConnected();
        }

        /**
         * Controlla la connessione o meno del terminale alla rete internet.
         * @param cm Context.getSystemService(Context.CONNECTIVITY_SERVICE)
         * @return true se connesso, false altrimenti
         */

        public static boolean isConnected(ConnectivityManager cm) {
                return isConnectedWifi(cm) || isConnected3G(cm);
        }




        //Metodo che controlla la connessione ad internet
        private boolean verificaInternetAttivo() {
                final AlertDialog.Builder gpsAlertBuilder = new AlertDialog.Builder(context);
                ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                if (!isConnected(cm)) {

                        gpsAlertBuilder.setIcon(R.drawable.attenzione);
                        gpsAlertBuilder.setTitle("Attivazione");
                        gpsAlertBuilder
                        .setMessage("E' necessario la connessione internet per rilevare correttamente l'indirizzo");
                        gpsAlertBuilder.setCancelable(false);
                        gpsAlertBuilder.setPositiveButton("Attiva",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        startActivityForResult(
                                                        new Intent(
                                                                        android.provider.Settings.ACTION_DATA_ROAMING_SETTINGS),//Actionwifisetting ACTION_DATA_ROAMING_SETTINGS
                                                                        0);
                                       
                                        //PosizioneRilevamento();
                                }
                               
                        });

                        gpsAlertBuilder.setNegativeButton("Annulla",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        //System.exit(0);
                                }
                        });
                        AlertDialog gpsAlert = gpsAlertBuilder.create();
                        gpsAlert.show();
                        return false;
                }
                return true;
        }

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Problema con activity controllo connessione
« Risposta #1 il: 03 Luglio 2013, 14:25:17 CEST »
0
io metterei nel primo if i controlli e poi degli elseif per le condizioni non rispettate
if(localizzazione.isGpsAttivo() && isConnected(cm)){ESEGUI IL CODICE}
elseif (!localizzazione.isGpsAttivo()) {messaggio}
elseif (!isConnected(cm)) {messaggio}

Offline lucacali87

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg dual
  • Sistema operativo:
    windows seven
Re:Problema con activity controllo connessione
« Risposta #2 il: 03 Luglio 2013, 15:02:19 CEST »
0
provato così, il problema è che fa un controllo alla volta, ossia se non ho la connessione la fa attivare e poi devo ripremere sul bottone, volevo avviare da solo, ossia nella peggiore ipotesi facevo attivare il gps, poi chiedevo internet e poi parte l'attesa del segnale

Codice (Java): [Seleziona]
public void PosizioneRilevamento(){
                ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                final AlertDialog.Builder gpsAlertBuilder = new AlertDialog.Builder(context);
                if(localizzazione.isGpsAttivo() & isConnected(cm) )
                {
                        Log.i("Funzionamento","avvio animazione");
                        //verificaInternetAttivo();    
                        //Finestra che indica il caricamento del gps
                        progressDialog=ProgressDialog.show(PosizioneActivity.this,"","Localizzazione in corso...");

                        //Rilevare posizione

                        // Thread utilizzato per attendere il rilevamento delle informazioni
                        // sulla posizione corrente dell'utente
                        new Thread() {

                                @Override
                                public void run() {

                                        /* Attendo che sia rilevata una nuova posizione */
                                        while (!localizzazione.isInfoPosizioneRilevata()) {
                                        }

                                        /*
                                         * Creo il messagio e lo invio permettendo al Thread di
                                         * comunicare all'esterno
                                         */

                                        // per ottenere un'istanza della classe Message si usa
                                        // l'apposito metodo della classe Handler obtainMessage()
                                        Message msg = handlerPosizioneRilevata.obtainMessage();
                                        // L'informazione vera e propria viene inserita in un Bundle che
                                        // non è altro che una mappa di stringhe del tipo chiave/valore
                                        Bundle b = new Bundle();
                                        b.putBoolean("rilevato", true);
                                        msg.setData(b);
                                        handlerPosizioneRilevata.sendMessage(msg);
                                }

                        }.start();
                        // main tread
                        // Handler che gestisce i messaggi ricevuti dal Thread
                        handlerPosizioneRilevata = new Handler() {

                                @Override
                                public void handleMessage(Message msg) {

                                        if (msg.getData().getBoolean("rilevato")) {
                                                editCitta.setEnabled(false);
                                                editCitta.setClickable(false);
                                                editCitta.setFocusable(false);
                                                editLuogo.setEnabled(false);
                                                editLuogo.setClickable(false);
                                                editLuogo.setFocusable(false);

                                                citta=localizzazione.getCitta();
                                                indirizzo=localizzazione.getIndirizzo();
                                                //chiudere messaggio di ricezione gps
                                                progressDialog.dismiss();
                                                cdt.cancel();
                                                //messaggio posizione acquisita
                                                toast=Toast.makeText(PosizioneActivity.this,citta +" "+ indirizzo,Toast.LENGTH_SHORT);
                                                toast.show();

                                                automatico=true;
                                        }

                                }

                        };
                }else if (!localizzazione.isGpsAttivo()) {

                        gpsAlertBuilder.setIcon(R.drawable.attenzione);
                        gpsAlertBuilder.setTitle("Attivazione");
                        gpsAlertBuilder
                        .setMessage("E' necessario attivare GPS e connessione internet");
                        gpsAlertBuilder.setCancelable(false);
                        gpsAlertBuilder.setPositiveButton("Attiva",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        startActivityForResult(
                                                        new Intent(
                                                                        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS),

                                                                        0);
                                        button.setEnabled(false);
                                        button.setClickable(false);
                                        button.setFocusable(false);

                                }
                        });

                        gpsAlertBuilder.setNegativeButton("Annulla",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        //System.exit(0);      
                                }
                        });
                        AlertDialog gpsAlert = gpsAlertBuilder.create();
                        gpsAlert.show();

                }else if (!isConnected(cm)) {//verifica connessione
                        gpsAlertBuilder.setIcon(R.drawable.attenzione);
                        gpsAlertBuilder.setTitle("Attivazione");
                        gpsAlertBuilder
                        .setMessage("E' necessario la connessione internet per rilevare correttamente l'indirizzo");
                        gpsAlertBuilder.setCancelable(false);
                        gpsAlertBuilder.setPositiveButton("Attiva",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        startActivityForResult(
                                                        new Intent(
                                                                        android.provider.Settings.ACTION_DATA_ROAMING_SETTINGS),//Actionwifisetting ACTION_DATA_ROAMING_SETTINGS
                                                                        0);

                                }

                        });

                        gpsAlertBuilder.setNegativeButton("Annulla",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        //System.exit(0);
                                }
                        });
                        AlertDialog gpsAlert = gpsAlertBuilder.create();
                        gpsAlert.show();

                }

        }

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Problema con activity controllo connessione
« Risposta #3 il: 03 Luglio 2013, 15:13:11 CEST »
0
prova a cambiare l'ordine metti per ultimo l' if con il doppio controllo cosi se i pri trovano qualcosa disattivato lo fai attivare e l'ultimo controllo trovera tutto attivo .
In teoria funziona

Offline lucacali87

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg dual
  • Sistema operativo:
    windows seven
Re:Problema con activity controllo connessione
« Risposta #4 il: 03 Luglio 2013, 15:32:59 CEST »
0
ho fatto così ma non so perchè alla fine anche se attivate risultano false e quindi non entra nell'ultimo if

edit: in pratica non segue la sequenza statica di istruzioni ma verifica tutto all'inizio, infatti ho messo un log prima di ogni if e come avvio l'activity stampa tt i log
Codice (Java): [Seleziona]
public void PosizioneRilevamento(){
                ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
                final AlertDialog.Builder gpsAlertBuilder = new AlertDialog.Builder(context);

                if (!isConnected(cm)) {//verifica connessione
                        gpsAlertBuilder.setIcon(R.drawable.attenzione);
                        gpsAlertBuilder.setTitle("Attivazione");
                        gpsAlertBuilder
                        .setMessage("E' necessario la connessione internet per rilevare correttamente l'indirizzo");
                        gpsAlertBuilder.setCancelable(false);
                        gpsAlertBuilder.setPositiveButton("Attiva",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        startActivityForResult(
                                                        new Intent(
                                                                        android.provider.Settings.ACTION_DATA_ROAMING_SETTINGS),//Actionwifisetting ACTION_DATA_ROAMING_SETTINGS
                                                                        0);

                                }

                        });

                        gpsAlertBuilder.setNegativeButton("Annulla",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        //System.exit(0);
                                }
                        });
                        AlertDialog gpsAlert = gpsAlertBuilder.create();
                        gpsAlert.show();

                }

                if (!localizzazione.isGpsAttivo()) {

                        gpsAlertBuilder.setIcon(R.drawable.attenzione);
                        gpsAlertBuilder.setTitle("Attivazione");
                        gpsAlertBuilder
                        .setMessage("E' necessario attivare GPS ");
                        gpsAlertBuilder.setCancelable(false);
                        gpsAlertBuilder.setPositiveButton("Attiva",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        startActivityForResult(
                                                        new Intent(
                                                                        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS),

                                                                        0);
                                        button.setEnabled(false);
                                        button.setClickable(false);
                                        button.setFocusable(false);

                                }
                        });

                        gpsAlertBuilder.setNegativeButton("Annulla",
                                        new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int id) {
                                        //System.exit(0);      
                                }
                        });
                        AlertDialog gpsAlert = gpsAlertBuilder.create();
                        gpsAlert.show();

                }
               
                Log.i("controllo","controllo gps e connessione");
                Log.i("GPS",Boolean.toString(localizzazione.isGpsAttivo()));
                Log.i("3G",Boolean.toString(isConnected(cm)));
               
                if(localizzazione.isGpsAttivo() & isConnected(cm) )
                {
                        Log.i("Funzionamento","avvio animazione");
                        //verificaInternetAttivo();    
                        //Finestra che indica il caricamento del gps
                        progressDialog=ProgressDialog.show(PosizioneActivity.this,"","Localizzazione in corso...");

                        //Rilevare posizione

                        // Thread utilizzato per attendere il rilevamento delle informazioni
                        // sulla posizione corrente dell'utente
                        new Thread() {

                                @Override
                                public void run() {

                                        /* Attendo che sia rilevata una nuova posizione */
                                        while (!localizzazione.isInfoPosizioneRilevata()) {
                                        }

                                        /*
                                         * Creo il messagio e lo invio permettendo al Thread di
                                         * comunicare all'esterno
                                         */

                                        // per ottenere un'istanza della classe Message si usa
                                        // l'apposito metodo della classe Handler obtainMessage()
                                        Message msg = handlerPosizioneRilevata.obtainMessage();
                                        // L'informazione vera e propria viene inserita in un Bundle che
                                        // non è altro che una mappa di stringhe del tipo chiave/valore
                                        Bundle b = new Bundle();
                                        b.putBoolean("rilevato", true);
                                        msg.setData(b);
                                        handlerPosizioneRilevata.sendMessage(msg);
                                }

                        }.start();
                        // main tread
                        // Handler che gestisce i messaggi ricevuti dal Thread
                        handlerPosizioneRilevata = new Handler() {

                                @Override
                                public void handleMessage(Message msg) {

                                        if (msg.getData().getBoolean("rilevato")) {
                                                editCitta.setEnabled(false);
                                                editCitta.setClickable(false);
                                                editCitta.setFocusable(false);
                                                editLuogo.setEnabled(false);
                                                editLuogo.setClickable(false);
                                                editLuogo.setFocusable(false);

                                                citta=localizzazione.getCitta();
                                                indirizzo=localizzazione.getIndirizzo();
                                                //chiudere messaggio di ricezione gps
                                                progressDialog.dismiss();
                                                cdt.cancel();
                                                //messaggio posizione acquisita
                                                toast=Toast.makeText(PosizioneActivity.this,citta +" "+ indirizzo,Toast.LENGTH_SHORT);
                                                toast.show();

                                                automatico=true;
                                        }

                                }

                        };
                }

        }
« Ultima modifica: 03 Luglio 2013, 15:35:47 CEST da lucacali87 »

Offline zorcraft

  • Utente junior
  • **
  • Post: 108
  • Respect: +5
    • Mostra profilo
  • Dispositivo Android:
    note
  • Play Store ID:
    zorcraft
Re:Problema con activity controllo connessione
« Risposta #5 il: 03 Luglio 2013, 15:48:27 CEST »
0
non se se si puo ma, prova ad inserire nel messaggio nel setpositivebutton dopo in codice che deve eseguire per attivare cio che ti serve  un Intent che richiama la stessa pagina , cioe chiudi e riapri la stessa

Codice (Java): [Seleziona]
Activity pagina=pagina1.this;
pagina.finish();
Intent pagina1=new Intent(pagina1.this,pagina1.class);
startActivity(pagina1);

Offline lucacali87

  • Nuovo arrivato
  • *
  • Post: 37
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    lg dual
  • Sistema operativo:
    windows seven
Re:Problema con activity controllo connessione
« Risposta #6 il: 03 Luglio 2013, 16:53:38 CEST »
0
provai tempo fa ma nulla, mi sembra strano sto fatto
edit: ho provato in tutti i modi ma non lo fa sequenziale, fa tutti i controlli subito, come cavolo è possibile?
« Ultima modifica: 04 Luglio 2013, 10:17:00 CEST da lucacali87 »