2011-06-22 37 views
6

Tôi đang làm việc trên các hành động cảm biến trong iphone và tôi đã tự hỏi nếu có ai biết làm thế nào để thực hiện các hành động bắt đầu và dừng cảm biến trong Android. Tôi đã tìm kiếm diễn đàn này nhưng không thể tìm thấy điều gì đó dứt khoát. Có ai hae và manh mối?thực hiện bắt đầu và dừng cảm biến android

Trả lời

12

Sử dụng cảm biến trên một hoạt động rất dễ dàng. Về cơ bản bạn cần:

1º Tuyên bố các cảm biến bạn cần.

// 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º Bạn phải initializate tất cả onCreate, một cái gì đó như thế này:

 // 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 nó một cái gì đó như thế này:

 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); 

Và 4, thiết lập các thính giả:

 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 bạn cần lưu CPU, vv, bạn có thể sử dụng một unlistener onPause và đăng ký lại onResume

 mSensorManager.unregisterListener(this); 

Tôi hy vọng nó giúp khởi động ..... Tất cả các bạn cần phải biết, HERE

+0

bạn thưa bạn là một người tiết kiệm cuộc sống :) cảm ơn nhiều !! – user788511

+3

Nếu tôi có cơ hội cho '100' +1, tôi sẽ làm điều đó cho bạn, Trong toàn bộ SO này, không ai từng nói sử dụng' unregisterListener' – VenomVendor

Các vấn đề liên quan