Android Open Source - android-augment-reality-framework Orientation






From Project

Back to project page android-augment-reality-framework.

License

The source code is released under:

GNU General Public License

If you think the Android project android-augment-reality-framework listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.jwetherell.augmented_reality.common;
/*  ww  w .j ava 2  s . c o  m*/

/**
 * This class detects the orientation of the device given the values from the
 * accelerometer.
 * 
 * @author Justin Wetherell <phishman3579@gmail.com>
 */
public class Orientation {

    private static ORIENTATION currentOrientation = ORIENTATION.UNKNOWN;
    private static int orientationAngle = -1;

    private Orientation() { }

    public static ORIENTATION getDeviceOrientation() {
        return currentOrientation;
    }

    public static int getDeviceAngle() {
        return orientationAngle;
    }

    public static enum ORIENTATION {
        UNKNOWN, PORTRAIT, PORTRAIT_UPSIDE_DOWN, LANDSCAPE, LANDSCAPE_UPSIDE_DOWN
    };

    public static void calcOrientation(float[] accel_values) {
        int tempOrientation = -1;
        float X = -accel_values[0];
        float Y = -accel_values[1];
        float Z = -accel_values[2];
        float magnitude = X * X + Y * Y;
        // Don't trust the angle if the magnitude is small compared to the y
        // value
        if (magnitude * 4 >= Z * Z) {
            float OneEightyOverPi = 57.29577957855f;
            float angle = (float) Math.atan2(-Y, X) * OneEightyOverPi;
            tempOrientation = 90 - Math.round(angle);
            // normalize to 0 - 359 range
            while (tempOrientation >= 360) {
                tempOrientation -= 360;
            }
            while (tempOrientation < 0) {
                tempOrientation += 360;
            }
        }
        // ^^ thanks to google for that code

        // now we must figure out which orientation based on the degrees
        ORIENTATION tempOrientRounded = ORIENTATION.UNKNOWN;
        // figure out actual orientation
        if (tempOrientation <= 45 || tempOrientation > 315) { // round to 0
            tempOrientRounded = ORIENTATION.PORTRAIT;// portrait
        } else if (tempOrientation > 45 && tempOrientation <= 135) { // round to 90
            tempOrientRounded = ORIENTATION.LANDSCAPE_UPSIDE_DOWN; // landscape left
        } else if (tempOrientation > 135 && tempOrientation <= 225) { // round to 180
            tempOrientRounded = ORIENTATION.PORTRAIT_UPSIDE_DOWN; // portrait upside down
        } else if (tempOrientation > 225 && tempOrientation <= 315) { // round to 270
            tempOrientRounded = ORIENTATION.LANDSCAPE;// landscape right
        }

        orientationAngle = tempOrientation;
        currentOrientation = tempOrientRounded;
    }
}




Java Source Code List

com.jwetherell.augmented_reality.activity.AugmentedReality.java
com.jwetherell.augmented_reality.activity.AugmentedView.java
com.jwetherell.augmented_reality.activity.Demo.java
com.jwetherell.augmented_reality.activity.SensorsActivity.java
com.jwetherell.augmented_reality.camera.CameraCompatibility.java
com.jwetherell.augmented_reality.camera.CameraModel.java
com.jwetherell.augmented_reality.camera.CameraSurface.java
com.jwetherell.augmented_reality.common.LowPassFilter.java
com.jwetherell.augmented_reality.common.Matrix.java
com.jwetherell.augmented_reality.common.Navigation.java
com.jwetherell.augmented_reality.common.Orientation.java
com.jwetherell.augmented_reality.common.ReusableString.java
com.jwetherell.augmented_reality.common.Vector.java
com.jwetherell.augmented_reality.data.ARData.java
com.jwetherell.augmented_reality.data.BuzzDataSource.java
com.jwetherell.augmented_reality.data.DataSource.java
com.jwetherell.augmented_reality.data.GooglePlacesDataSource.java
com.jwetherell.augmented_reality.data.LocalDataSource.java
com.jwetherell.augmented_reality.data.NetworkDataSource.java
com.jwetherell.augmented_reality.data.PhysicalLocation.java
com.jwetherell.augmented_reality.data.ScreenPosition.java
com.jwetherell.augmented_reality.data.TwitterDataSource.java
com.jwetherell.augmented_reality.data.WikipediaDataSource.java
com.jwetherell.augmented_reality.ui.IconMarker.java
com.jwetherell.augmented_reality.ui.Marker.java
com.jwetherell.augmented_reality.ui.Radar.java
com.jwetherell.augmented_reality.ui.objects.PaintableBox.java
com.jwetherell.augmented_reality.ui.objects.PaintableBoxedText.java
com.jwetherell.augmented_reality.ui.objects.PaintableCircle.java
com.jwetherell.augmented_reality.ui.objects.PaintableGps.java
com.jwetherell.augmented_reality.ui.objects.PaintableIcon.java
com.jwetherell.augmented_reality.ui.objects.PaintableLine.java
com.jwetherell.augmented_reality.ui.objects.PaintableObject.java
com.jwetherell.augmented_reality.ui.objects.PaintablePoint.java
com.jwetherell.augmented_reality.ui.objects.PaintablePosition.java
com.jwetherell.augmented_reality.ui.objects.PaintableRadarPoints.java
com.jwetherell.augmented_reality.ui.objects.PaintableText.java
com.jwetherell.augmented_reality.widget.VerticalSeekBar.java
com.jwetherell.augmented_reality.widget.VerticalTextView.java