简体   繁体   中英

Get Android rotation angle in x-axis

I'm experimenting with some Android functions. Right now, I'm trying to get the rotation angle of the device, so when I show a happy face bitmap on a canvas, it always looks "straight".

All I would need for this, is to get the x-axis rotation angle (I guess) but I can't find how to achieve it. Hope you can help me. Thank you.

Found a better answer! (Thanks to forgivegod for helping me starting this!)

ORIENTATION is now deprecated and uses to many resources. Plus, it works with reference to the magnetic north, which gives not the pure rotation of the device, but actually always points to the north.

By using ACCELEROMETER, one can calculate the rotation angle of the device with values [0] and [1] this way:

    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
        if (event.sensor != mSensor)
            return;

        aX= event.values[0];
        aY= event.values[1];
        //aZ= event.values[2];
        angle = Math.atan2(aX, aY)/(Math.PI/180);
    }

Maybe this can help someone else in the future. Thanks a lot!

There is azimuth, pitch and roll available to you. Not sure which one relates to your "x-axis" but I think its azimuth.

Time for helpful links:

  1. http://www.workingfromhere.com/blog/2009/03/30/orientation-sensor-tips-in-android/
  2. http://marakana.com/forums/android/examples/43.html
  3. http://marakana.com/static/tutorials/SensorDemo.zip

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM