2014-01-25 29 views
1

我需要能夠在我的場景類中實現SensorEventListener,但是要設置好,傳感器似乎必須使用如下代碼的活動類:在非活動類中使用傳感器Android/Andengine

SensorManager sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE); 
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME); 

即使我在活動課上做了,我也需要在場景類中使用加速度計。有沒有辦法做到這一點?

回答

2

您可以通過創建使您的類實現SensorEventListener做到這一點,例如:

public class MySensor implements SensorEventListener { 
    Context context; 

    public InputAccelerometerEx(Context context) { 
     this.context = context; 
     SensorManager manager = 
      (SensorManager)context.getSystemService(Context.SENSOR_SERVICE); 
     Sensor accel = manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
     manager.registerListener(this, accel, SensorManager.SENSOR_DELAY_GAME); 
    } 

    public void onSensorChanged(SensorEvent event) { 
     // respond to sensor changes here :) 
    } 

    // implement remaining sensor methods here.. 
} 

現在,只需創建您的活動的onCreate()的類的實例,例如:

public class MyActivity extends Activity { 

    MySensor sensor; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     sensor = new MySensor(this); 
    } 
} 

當然,這些只是示例,您可以簡單地將SensorEventListener的實現添加到場景類中,並在您的活動中創建該實例的實例,而不是使用單獨的類。