直接上源码:

package com.z.currorientation;import android.content.Context;import android.hardware.SensorManager;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.OrientationEventListener;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    private final String TAG = MainActivity.class.getSimpleName();    private CameraOrientationListener orientationListener;    private TextView txt;    /**     * 当前屏幕旋转角度     */    private int mOrientation = 0;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        txt = (TextView) findViewById(R.id.txt);        orientationListener = new CameraOrientationListener(this);        orientationListener.enable();        startOrientationChangeListener();    }    /**     * 启动屏幕朝向改变监听函数 用于在屏幕横竖屏切换时改变保存的图片的方向     */    private void startOrientationChangeListener() {        OrientationEventListener mOrEventListener = new OrientationEventListener(this) {            @Override            public void onOrientationChanged(int rotation) {                Log.i(TAG, "当前屏幕手持角度方法:" + rotation + "°");                if (((rotation >= 0) && (rotation <= 45)) || (rotation > 315)) {                    rotation = 0;                } else if ((rotation > 45) && (rotation <= 135)) {                    rotation = 90;                } else if ((rotation > 135) && (rotation <= 225)) {                    rotation = 180;                } else if ((rotation > 225) && (rotation <= 315)) {                    rotation = 270;                } else {                    rotation = 0;                }                if (rotation == mOrientation)                    return;                mOrientation = rotation;            }        };        mOrEventListener.enable();    }    /**     * 当方向改变时,将调用侦听器onOrientationChanged(int)     */    private class CameraOrientationListener extends OrientationEventListener {        private int mCurrentNormalizedOrientation;        private int mRememberedNormalOrientation;        public CameraOrientationListener(Context context) {            super(context, SensorManager.SENSOR_DELAY_NORMAL);        }        @Override        public void onOrientationChanged(final int orientation) {            Log.i(TAG, "当前屏幕手持角度:" + orientation + "°");            if (orientation != ORIENTATION_UNKNOWN) {                mCurrentNormalizedOrientation = normalize(orientation);            }            runOnUiThread(new Runnable() {                @Override                public void run() {                    String str = "当前屏幕手持角度:" + orientation + "°\n当前屏幕手持方向:" + mCurrentNormalizedOrientation;                    txt.setText(str);                }            });        }        private int normalize(int degrees) {            if (degrees > 315 || degrees <= 45) {                return 0;            }            if (degrees > 45 && degrees <= 135) {                return 90;            }            if (degrees > 135 && degrees <= 225) {                return 180;            }            if (degrees > 225 && degrees <= 315) {                return 270;            }            throw new RuntimeException("The physics as we know them are no more. Watch out for anomalies.");        }        /**         * 记录方向         */        public void rememberOrientation() {            mRememberedNormalOrientation = mCurrentNormalizedOrientation;        }        /**         * 获取当前方向         *         * @return         */        public int getRememberedNormalOrientation() {            return mRememberedNormalOrientation;        }    }}

10-16 16:20:11.256 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:355°10-16 16:20:11.257 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:355°10-16 16:20:12.318 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:356°10-16 16:20:12.319 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:356°10-16 16:20:12.506 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:355°10-16 16:20:12.506 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:355°10-16 16:20:12.881 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:356°10-16 16:20:12.881 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:356°10-16 16:20:14.131 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:355°10-16 16:20:14.131 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:355°10-16 16:20:14.319 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:356°10-16 16:20:14.319 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:356°10-16 16:20:29.194 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:359°10-16 16:20:29.194 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:359°10-16 16:20:29.381 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:355°10-16 16:20:29.381 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:355°10-16 16:20:29.631 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:359°10-16 16:20:29.631 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:359°10-16 16:20:29.818 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:357°10-16 16:20:29.819 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:357°10-16 16:20:31.006 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:356°10-16 16:20:31.006 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:356°10-16 16:20:31.193 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:357°10-16 16:20:31.193 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:357°10-16 16:20:31.444 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:359°10-16 16:20:31.444 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:359°10-16 16:20:31.631 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:339°10-16 16:20:31.631 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:339°10-16 16:20:31.818 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:312°10-16 16:20:31.818 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:312°10-16 16:20:32.006 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:311°10-16 16:20:32.006 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:311°10-16 16:20:32.256 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:313°10-16 16:20:32.256 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:313°10-16 16:20:32.444 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:314°10-16 16:20:32.444 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:314°10-16 16:20:32.631 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:327°10-16 16:20:32.631 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:327°10-16 16:20:32.818 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:6°10-16 16:20:32.819 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:6°10-16 16:20:33.069 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:1°10-16 16:20:33.069 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:1°10-16 16:20:33.256 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:352°10-16 16:20:33.256 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:352°10-16 16:20:33.444 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:358°10-16 16:20:33.444 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:358°10-16 16:20:33.631 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:15°10-16 16:20:33.631 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:15°10-16 16:20:33.819 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度方法:-1°10-16 16:20:33.819 14881-14881/com.z.currorientation I/MainActivity: 当前屏幕手持角度:-1°

一般用于自定义相机的时候...

更多相关文章

  1. Android(安卓)Demos 示例BitmapMesh中部分方法的理解
  2. Android调用系统功能获取当前经纬度
  3. android 如何判断当前进程在主页面
  4. 关于android如何获取屏幕分辨率的例子
  5. 2014.01.16 ——— android 调整屏幕分辨率
  6. android 笔记 --- Android中开发中常用代码
  7. android 横屏竖屏设置
  8. Android--MediaPlayer(实现列表选歌,上一首,下一首,清空播放列表,搜
  9. android 4.2 防止锁屏幕

随机推荐

  1. android输入框EditText输入银行卡,输入手
  2. android 开启自动旋转屏幕
  3. android操作sqlite3的blob字段,显示数据
  4. 新浪微博布局学习——活用Android的Relat
  5. android Pull方式解析xml文件
  6. Android拖动控件改变其位置
  7. Android中内容提供者ContentProvider实现
  8. android Http文件上传
  9. 【Android】手机地图功能——利用手机GPS
  10. android 6.0/7.1/9 默认打开 开发者选项