使用android:screenOrientation检测设备方向更改

时间:2011-03-28 20:13:11

标签: android webview screen-orientation

有没有办法检测设备定位事件或至少检测到 使用时获取当前设备方向 android:screenOrientation在清单中? 我的意思是设备方向而非应用方向。

我的问题是我真的想让我的应用程序保持在portait模式 (这是一个网络视图)但我想在我自己处理方向改变 应用程序。当设置android:screenOrientation时,取向为getped 方法始终是应用程序方向,而不是设备 取向。

此致 加埃唐

3 个答案:

答案 0 :(得分:1)

Yo可以使用加速度计来检测设备方向。我知道,这更难,但我认为是唯一的解决方案。

Android | Sensor Manager

Android | Sensor Manager | getOrientation

快乐编码:)

答案 1 :(得分:1)

如果您想自己处理设备旋转,请使用以下方法:

@Override
public void onConfigurationChanged(Configuration config)
{
    super.onConfigurationChanged(config);
    Display display = ((WindowManager)getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();

    if(display.getRotation() == Surface.ROTATION_90)
    {           
        mFlash.startAnimation(mRotate);
    }
    if(display.getRotation() == Surface.ROTATION_90)
    {
        parameters.setPreviewSize(width, height);                           
    }

    if(display.getRotation() == Surface.ROTATION_180)
    {
        parameters.setPreviewSize(height, width);               
    }

    if(display.getRotation() == Surface.ROTATION_270)
    {
        parameters.setPreviewSize(width, height);
        mCamera.setDisplayOrientation(180);
    }

}

if语句中的操作只是可能做的事情的示例。显然,处理你需要的任何东西。

答案 2 :(得分:0)

我认为您获得的好方向(纵向或横向)值将始终为您提供“应用程序方向”。对于设备方向,您可以查看SensorManager.getOrientation

不幸的是,用于侦听此值更改的方法已标记为已弃用,因此您可能需要定期轮询。