在非活动类Android / Andengine中使用传感器

时间:2014-01-25 20:32:07

标签: android andengine accelerometer

我需要能够在我的一个场景类中实现SensorEventListener,但是要设置,似乎传感器必须使用这样的代码的活动类:

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

即使我在活动课中做过,我也需要在场景课中使用加速度计。有没有办法做到这一点?

1 个答案:

答案 0 :(得分: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的实现添加到场景类中,并在您的活动中创建该实例,而不是使用单独的类。