title: I want to access the orientation and accelerometer sensor at the same time. What is the right way to do this?
body: <p>I want to access the orientation and accelerometer sensor at the same time. What is the right way to do this?</p>
  
  <p>I am using</p>
  
  <pre><code>public class MainActivity extends Activity
  {
      private SensorManager sensorManager;
      private Sensor sensor;
      private Sensor sensor2;
      private float x, y, z;
      private float x1, y1, z1;
      private String output;
  
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
          sensor = sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
          sensor2 = sensorManager.getSensorList(Sensor.TYPE_ORIENTATION).get(0);
      }
  
      private void refreshDisplay() {
          output = String.format(";%f;%f;%f;%f;%f;%f", x, y, z, x1, y1, z1);
      }
  
      @Override
      protected void onResume() {
          super.onResume();
          sensorManager.registerListener(accelerationListener, sensor,
          SensorManager.SENSOR_DELAY_GAME);
          sensorManager.registerListener(orientationListener, sensor2,
          SensorManager.SENSOR_DELAY_GAME);
      }
  
      @Override
      protected void onPause() {
          sensorManager.unregisterListener(accelerationListener);
          sensorManager.unregisterListener(orientationListener);
          super.onStop();
      }
  
      private SensorEventListener accelerationListener = new SensorEventListener() {
          @Override
          public void onAccuracyChanged(Sensor sensor, int acc) {
          }
  
          @Override
          public void onSensorChanged(SensorEvent event) {
              x = event.values[0];
              y = event.values[1];
              z = event.values[2];
              refreshDisplay();
          }
  
      };
  
      private SensorEventListener orientationListener = new SensorEventListener() {
          @Override
          public void onAccuracyChanged(Sensor sensor, int acc) {
          }
  
          @Override
          public void onSensorChanged(SensorEvent event) {
              x1 = event.values[0];
              y1 = event.values[1];
              z1 = event.values[2];
              refreshDisplay();
          }
  
      };        
  }
  </code></pre>
  
  <p>But this is choppy. Using only sensor or the accelerometer is smooth.</p>
  
  <p>EDITED: OnPause</p>