@Override public void onSensorChanged(SensorEvent event) { Sensor sensor = event.sensor; if (sensor.getType() == Sensor.TYPE_STEP_COUNTER) { if (first) { first = false; System.out.println("error first"); // Toast.makeText(this, "sensor result", Toast.LENGTH_LONG).show(); count1 = Float.parseFloat(String.valueOf(event.values[0])); } if (activityRunning) { System.out.println("error later"); // Toast.makeText(this, "sensor value 1", Toast.LENGTH_LONG).show(); drawView.invalidate(); count.setText((Float.parseFloat(String.valueOf(event.values[0])) - count1) + ""); } } if (event.sensor == mAccelerometer) { System.arraycopy(event.values, 0, mLastAccelerometer, 0, event.values.length); mLastAccelerometerSet = true; } else if (event.sensor == mMagnetometer) { System.arraycopy(event.values, 0, mLastMagnetometer, 0, event.values.length); mLastMagnetometerSet = true; } if (mLastAccelerometerSet && mLastMagnetometerSet) { Toast.makeText(this, "I am here", Toast.LENGTH_LONG).show(); SensorManager.getRotationMatrix(mR, null, mLastAccelerometer, mLastMagnetometer); SensorManager.getOrientation(mR, mOrientation); float azimuthInRadians = mOrientation[0]; float azimuthInDegress = (float) (Math.toDegrees(azimuthInRadians) + 360) % 360; angle.setText(azimuthInRadians + " radians and " + azimuthInDegress + " degrees"); float diff = Math.abs(azimuthInDegress - previousdegree); if (diff > 90) { previousdegree = azimuthInDegress; if (azimuthInDegress < 45 || azimuthInDegress > 315) { drawView.current = DrawView.Side.North; } else if (azimuthInDegress > 45 || azimuthInDegress < 135) { drawView.current = DrawView.Side.East; } else if (azimuthInDegress > 135 || azimuthInDegress < 225) { drawView.current = DrawView.Side.South; } else { drawView.current = DrawView.Side.West; } } } }