android手机旋转方向识别

private OrientationEventListener mOrientationListener;
    private String TAG = "MainActivity";
    private int screenCurOrient = 2; //1表示正竖屏,2表示正横屏,3表示反竖屏,4表示反横屏

    private final void startOrientationChangeListener() {
        mOrientationListener = new OrientationEventListener(this) {
            @Override
            public void onOrientationChanged(int rotation) {
                //判断四个方向
                if (rotation == -1) {
                    Log.d(TAG, "手机平放:" + rotation);
                } else if (rotation < 10 || rotation > 350) {
                    screenOrientChange(1);
                } else if (rotation < 100 && rotation > 80) {
                    screenOrientChange(4);
                } else if (rotation < 190 && rotation > 170) {
                    screenOrientChange(3);
                } else if (rotation < 280 && rotation > 260) {
                    screenOrientChange(2);
                }
                else
                {
                }
            }
        };
        mOrientationListener.enable();
    }

    private void screenOrientChange(int Orient)
    {
        if(Orient != screenCurOrient)
        {
            screenCurOrient = Orient;
            switch (screenCurOrient)
            {
                case 1:
                    Log.d(TAG, "正竖屏:");
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                    break;
                case 2:
                    Log.d(TAG, "正横屏:");
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                    break;
                case 3:
                    Log.d(TAG, "反竖屏:");
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                    break;
                case 4:
                    Log.d(TAG, "反横屏:");
                    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                    break;
            }
        }
    }

在onCreate方法中调用startOrientationChangeListener方法即可。
时间: 2024-10-29 19:13:42

android手机旋转方向识别的相关文章

解决Android手机上无法识别呼叫转移来电的问题

最近不想带两个手机了,便将那个老手机上的小号来电全部转移到了新的手机上了.可以解决老手机功能太弱的问题,也没有带两个手机的不便,虽然要要稍微多掏点电话费外,用起来还是蛮方便的.但由于小号上本身电话就很少,也多掏不了多少钱. 然而,使用的过程中发现有点问题,那就是无法识别来电是从小号上转移过来的还是直接呼叫的主号,记得以前诺基亚的小砖头都有这种功能的, Android却没有这种功能,确实有点失望.在网上搜了一下,貌似解决这个问题的程序还蛮少的,最终找到了一个小程序,它可以在来电界面增加一个小的文本

android手机旋转屏幕时让GridView的列数与列宽度自适应

无意中打开了一年前做过的一个android应用的代码,看到里面实现的一个小功能点(如题),现写篇文章做个笔记.当时面临的问题是,在旋转屏幕的时候需要让gridview的列数与宽度能自适应屏幕宽度,每个单元格之间还需要保留一定的间距.因为每款手机的屏幕宽度不都相同,我们在指定了单元格的宽度与间距之后,并不能确定每行中所能容纳的单元格数量,这个数量必须在运行时通过计算得出,同样,我们设置的单元格宽度和间距不能保证刚好容纳在屏幕宽度内,为了解决这个问题,设计了一个简单的算法,首先需要预先指定单元格的宽

android 实现手机方向识别

//自定义导航图标 private BitmapDescriptor mIconLocation; //自定义传感器implements SensorEventListener private MyOrientationListener myOrientationListener; //把监听的x方向的值存储到这里 private float mCurrentX; //初始化图标 mIconLocation = BitmapDescriptorFactory.fromResource(R.dra

利用exif.js解决ios或Android手机上传竖拍照片旋转90度问题

html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正. 利用exif.js读取照片的拍摄信息,详见  http://code.ciaoca.com/javascript/exif-js/ 这里主要用到Orientation属性. Orientation属性说明如下: 旋转角度 参数 0° 1 顺时针90° 6 逆时针9

Android图片处理:识别图像方向并显示

在Android中使用ImageView显示图片的时候发现图片显示不正,方向偏了或者倒过来了. 解决这个问题很自然想到的分两步走: 1.自动识别图像方向,计算旋转角度: 2.对图像进行旋转并显示. 一.识别图像方向 首先在这里提一个概念EXIF(Exchangeable Image File Format,可交换图像文件),具体解释参见Wiki. 简而言之,Exif是一个标准,用于电子照相机(也包括手机.扫描器等)上,用来规范图片.声音.视屏以及它们的一些辅助标记格式. Exif支持的格式如下:

部分Android手机拍照后照片被旋转的解决方案

在部分Android手机(如MT788.Note2)上,使用Camera拍照以后,得到的照片会被自动旋转(90°.180°.270°),这个情况很不符合预期.仔细分析了一下,因为照片属性中是存储了旋转信息的,所以要解决这个问题,可以在onActivityResult方法中,获取到照片数据后,读取它的旋转信息,如果不是0,说明这个照片已经被旋转过了,那么再使用android.graphics.Matrix将照片旋转回去即可. 1.读取图片的旋转属性 /**  * 读取图片的旋转的角度  *  *

android手机自带浏览器无法识别apk文件

原文:http://www.cnblogs.com/yaozhongxiao/archive/2013/07/17/3194765.html 在项目中遇到安卓自带浏览器下载成功 , 但无法打开已下载的APK文件自动安装的问题,特别是三星系列的手机普遍存在这种问题,google后发现也有朋友遇到类似的问题: http://bbs.csdn.net/topics/390262400 引:      写了一些 android 的应用放在网站上让人下载,在某些机型上,三星的 android 的 4.0 

Android手机获取手机唯一识别号(转)

写在前面,发这个帖我想,可能很多人用不到,那你就当科普了解了,其实每个游戏,软件都会获取你的imei废话不说,开始! 在开发手机应用时,开发者最关心的是开发的手机软件有多少用户安装,并且正在使用.这就需要识别手机的唯一性.目前我了解的有两种方法,获取手机的 imei号(imei号是唯一识别手机的号码).获取android id号(android id 是手机系统的唯一号码). 第一种方法: android获取手机imei号的方法在在android系统中获取imei号和其他手机信息一文中做了详细的

解决部分android手机自带浏览器下载 apk 文件的时候提示无法识别该类型的文件

android 有些较为早期的手机自带的浏览器可能会出现无法识别 apk 类型的文件,因此在文件服务器端需要做以下的调整: 解决一: 在IIS服务器上,MIME类型中添加一个: 文件扩展名: .apk MIME类型: application/vnd.android.package-archive 解决二: 服务端部署在tomcat下,已经在tomcat的web.xml里面配置了mini type <mime-mapping> <extension>apk</extension