package org.r3pek.pharmacies.widgets; import java.util.LinkedList; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.view.View; public class ImageRotater implements SensorEventListener { private LinkedList images = new LinkedList(); private float lastOrientation = 0; public void addImage(ImageOrientationSensor image) { synchronized (images) { if (images.contains(image)) return; images.add(image); } } public void delImage(ImageOrientationSensor image) { synchronized (images) { images.remove(image); } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } public float getLastOrientation() { return lastOrientation; } @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() != Sensor.TYPE_ORIENTATION) return; if (Math.abs(event.values[0] - lastOrientation) < 5) return; lastOrientation = event.values[0]; synchronized (images) { for (ImageOrientationSensor a : images) { if (((View)a).isShown()) a.setOrientation(lastOrientation); } } } }