Autore Topic: OnPause etc. per fermare un SensorEventListener  (Letto 360 volte)

Offline davidino81

  • Utente junior
  • **
  • Post: 66
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc one v
  • Sistema operativo:
    Windows 7
OnPause etc. per fermare un SensorEventListener
« il: 05 Dicembre 2012, 13:43:01 CET »
0
Ciao a tutti,

Non so come chiudere un SensorEventListener quando la activity non è in primo piano.
Ho provato ad usare SensorManager.unregisterListener(SemnsorEventListener) dentro i metodo OnPause etc. ma non mi riconosce il SensorEventListener (nel mio caso shake).
Vi ho postato parte della Activity.
Se non lo chiudo il Listener continua in background ed ogni volta che shakero icel mi appare il Toast.

Se qualcuno potesse aiutarmi li sarei molto grato.



Codice (Java): [Seleziona]
if (shake_config){

                         ShakeListener shake = new ShakeListener(){  //ShakeListener è un classe creata da me che implemenmta SensorEventListener
                                public void onShake(){
                                       
                                Tshake.show(); // e' un toast che mi indica che il cel è stato shakerato
                               
                               
                                }
                        };

                        gestore = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
                        accelerometri = gestore.getSensorList(Sensor.TYPE_ACCELEROMETER);

                        if ((accelerometri.size()) != 0 && (accelerometri) != null)
                        {

                                for (Sensor accelerometro : accelerometri)
                                {
                                        accelerometro = gestore.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); // ritorna il sensore rishiesto (TYPE_ACCELLEROMETER) o null se non esiste
                                        gestore.registerListener(shake, accelerometro, SensorManager.SENSOR_DELAY_FASTEST);
                                           
                                }
                        }
                       
                        else {
                                //accellerometro non disponibile
                                shake_config=false; //da spostare nel database delle configurazioni
                                Toast mioToast = Toast.makeText(this,
                                                "ACCELLEROMETRO NON DISPONIBILE \n SHAKE NON UTILIZZABILE",
                                                Toast.LENGTH_LONG);
                                mioToast.show();
                                gestore.unregisterListener(shake);
                               
                                return;
                        }      

                                               
                       
                };