Autore Topic: c'è campo?  (Letto 634 volte)

Offline Sebastian

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • Mostra profilo
c'è campo?
« il: 28 Settembre 2010, 17:23:37 CEST »
0
Ciao a tutti!
 ho fatto una semplicissima app che mostra un toast ogni qualvolta il telefono cambia lo stato da "c'è campo" a "non c'è campo"..il problema è che l'app fa la rilevazione solo quando inizia  e poi sembra non ascoltare più i cambiamenti della rete.. qualcuno ha idea del perchè?

Codice (Java): [Seleziona]
public class PrendeActivity extends Activity {
       
       
                 
        private final static String LOG_TAG = "PrendeActivity";
        private ServiceState antenna;


  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        antenna=new ServiceState();
        //mi registro al telephony manager
        tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
       
            //--------------- LISTENER
 PhoneStateListener phoneStateListener=new PhoneStateListener(){
               
    @Override
        public void  onServiceStateChanged(ServiceState serviceState) {
                                  Toast.makeText(PrendeActivity.this,"Lo stato è cambiato in"+ serviceState.getState() ,Toast.LENGTH_SHORT).show();
                                  Log.i(LOG_TAG, "Lo stato e' cambiato in"+ serviceState.getState());
                                 
                          }
        } ; //fine listener    
         
        //aggancio
          tm.listen(phoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);

  }//fine onCreate()   

}

PS: Ho provatomettendo anche il listener fuori dall' onCreate() ma il comportamento non cambia..
PPS: una volta sistemata io la metterei nel wiki come esempio di utilizzo del TelephonyManager, che ne dite?
« Ultima modifica: 28 Settembre 2010, 20:21:53 CEST da Sebastian »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:c'è campo?
« Risposta #1 il: 28 Settembre 2010, 17:31:23 CEST »
0
Secondo me il listener dovresti registrarlo una volta sola al boot del telefono :)

Offline Sebastian

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • Mostra profilo
Re:c'è campo?
« Risposta #2 il: 28 Settembre 2010, 20:21:21 CEST »
0
mmmh.. in che modo?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:c'è campo?
« Risposta #3 il: 28 Settembre 2010, 20:42:48 CEST »
0
Crea un broadcast receiver che riceve l'intent del boot... niente di trascendentale :)

Offline Sebastian

  • Utente junior
  • **
  • Post: 81
  • Respect: 0
    • Mostra profilo
Re:c'è campo?
« Risposta #4 il: 29 Settembre 2010, 12:57:50 CEST »
0
E' stato sufficente mettere final davanti al PhoneStateListener...e funziona  :-)

il problema però è  un altro: le righe
Codice (Java): [Seleziona]
private ServiceState antenna=new ServiceState();
antenna.getState();


mostrano uno stato indipendente da quanto mostra l'icona dell'antenna del cellulare(quella che dice se c'è campo o no).
In pratica
Codice (Java): [Seleziona]
serviceState  si aggancia,
Codice (Java): [Seleziona]
antenna  no..    o_O