android – 使用传感器事件检测手机方向

前端之家收集整理的这篇文章主要介绍了android – 使用传感器事件检测手机方向前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Activity,需要锁定它的方向
setRequestedOrientation(screenOrientation);

但我希望获得方向更新,以便我可以对UI进行调整(想象一下HTC相机应用程序,只有按钮的图标改变方向).
所以我找到了this class.它提供了0到360之间的方向值.我可以过滤这个值,即完美区间[a,b],如果< x< b那么方向是横向还是纵向?计算意味着什么?任何提示

解决方法

听起来你需要代码才能在设备的方向改变为4个法线方向之一而不是每个角度时做出反应.这会将方向过滤为仅限0度,90度,180度和270度的值:
OrientationEventListener myOrientationEventListener;
    int iOrientation;

    myOrientationEventListener = new OrientationEventListener(this,SensorManager.SENSOR_DELAY_NORMAL)
    {

        @Override
        public void onOrientationChanged(int iAngle)
        {                         // 0  15 30 45 60 75,90 105,120,135,150,165,180,195,210,225,240,255,270,285,300,315,330,345
            final int iLookup[] = {0,90,0}; // 15-degree increments 
            if (iAngle != ORIENTATION_UNKNOWN)
            {
                int iNewOrientation = iLookup[iAngle / 15];
                if (iOrientation != iNewOrientation)
                {
                    iOrientation = iNewOrientation;
                    // take action on new orientation here
                }
            }
        }
    };

    // To display if orientation detection will work and enable it
    if (myOrientationEventListener.canDetectOrientation())
    {
    Toast.makeText(this,"Can DetectOrientation",Toast.LENGTH_LONG).show();
        myOrientationEventListener.enable();
    }
    else
    {
    Toast.makeText(this,"Can't DetectOrientation",Toast.LENGTH_LONG).show();
    }

猜你在找的Android相关文章