2011-06-22 19 views
6

Estoy trabajando en la acción del sensor en iphone y me preguntaba si alguien sabría cómo implementar las acciones de inicio y detención del sensor en android. He buscado este foro pero no he podido encontrar algo definitivo. ¿Alguien tiene pistas?implementar start and stop sensor android

Respuesta

12

Uso del sensor en una actividad es fácil. Básicamente necesita:

1º Declare los sensores que necesita.

// Sensor static 
static private SensorManager mSensorManager; 
static private List<Sensor> deviceSensors; 
static private Sensor mAccelerometer; 
static private Sensor mGravity; 
static private Sensor mGyroscope; 
static private Sensor mLinearAcceleration; 
static private Sensor mRotationVector; 
static private Sensor mOrientation; 
static private Sensor mMagneticField; 
static private Sensor mProximity; 
static private Sensor mPressure; 
static private Sensor mLight; 

2º Debe initializate todo onCreate, algo como esto:

 // Add sensor manager STATIC (only 1 time) 
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
    deviceSensors = mSensorManager.getSensorList(Sensor.TYPE_ALL); 


    // Load default Sensors 
    loadDefaultSensors(); 

    // Set Sensor Listener 
    setAllSensorListener(); 

3º loadDefaultSensors que algo como esto:

 mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    mGravity = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY); 
    mGyroscope = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE); 
    mLinearAcceleration = mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION); 
    mRotationVector = mSensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR); 
    mOrientation = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION); 
    mMagneticField = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); 
    mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 
    mPressure = mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE); 
    mLight = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); 

y 4, establezca los oyentes:

 mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mGravity, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mGyroscope, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mLinearAcceleration, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mRotationVector, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mOrientation, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mMagneticField, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mPressure, SensorManager.SENSOR_DELAY_NORMAL); 
    mSensorManager.registerListener(this, mLight, SensorManager.SENSOR_DELAY_NORMAL); 

5º I f necesita ahorrar CPU, etc, se puede utilizar un unlistener onPause y registrarse de nuevo onResume

 mSensorManager.unregisterListener(this); 

espero que ayude a empezar ..... Todo lo que necesita saber, HERE

+0

usted señor es un salvavidas :) ¡muchas gracias! – user788511

+3

Si tuviera la oportunidad de dar '100' +1, lo haría por usted, en todo este SO, nadie ha dicho que use' unregisterListener' – VenomVendor