You want the code structured similar to the snippet below
Code:
// get sensorManager and initialise sensor listeners
mSensorManager = (SensorManager) hardwareMap.appContext.getSystemService(Context.SENSOR_SERVICE);
if (mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER) == null ||
mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE) == null ||
mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION) == null ||
mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD) == null) {
DbgLog.msg("FTC4855 - For this OpMode a phone with Gyro / Accelerometer / Magnetometer is required");
bInitialized = false;
}
else {
bInitialized = true;
initListeners();
// wait for one second until gyroscope and magnetometer/accelerometer
// data is initialised then scedule the complementary filter task
fuseTimer.scheduleAtFixedRate(new calculateFusedOrientationTask(),
1000, TIME_CONSTANT);
}
...
// This function registers sensor listeners for the accelerometer, magnetometer and gyroscope.
private void initListeners(){
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE),
SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
SensorManager.SENSOR_DELAY_FASTEST);
mSensorManager.registerListener(this,
mSensorManager.getDefaultSensor(Sensor.TYPE_LINEAR_ACCELERATION),
SensorManager.SENSOR_DELAY_FASTEST);
}