gpt4 book ai didi

android - getDefaultDisplay().getRotation();总是返回相同的值

转载 作者:太空狗 更新时间:2023-10-29 15:28:24 27 4
gpt4 key购买 nike

我试图在从自定义相机 Activity 拍摄照片时获取设备方向。以前,我到处检查如何实现它,并没有得到人们建议的解决方案的结果。

我使用这行代码检索方向但没有结果。它总是返回 1。如果有帮助,我使用三星 Galaxy S III 进行开发。

 int rotation = getWindowManager().getDefaultDisplay().getRotation();
Log.d(TAG, "Taken rotation " + rotation);
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
int orientation;
// if the device's natural orientation is portrait:
if ((rotation == Surface.ROTATION_0
|| rotation == Surface.ROTATION_180) && height > width ||
(rotation == Surface.ROTATION_90
|| rotation == Surface.ROTATION_270) && width > height) {
switch(rotation) {
case Surface.ROTATION_0:
orientation = 0;
break;
case Surface.ROTATION_90:
orientation = 90;
break;
case Surface.ROTATION_180:
orientation =180;
break;
case Surface.ROTATION_270:
orientation = 270;
break;
default:
Log.e(TAG, "Unknown screen orientation. Defaulting to " +
"portrait.");
orientation = 0;
break;
}

最佳答案

这是基于我所知道的猜测,但我认为 Surface.ROTATION_90 是一个常量整数名称。把它想象成这样:

final int Surface.ROTATION_0 = 0;
final int Surface.ROTATION_90 = 1;
final int Surface.ROTATION_180 = 2;
final int Surface.ROTATION_270 = 3;

在程序的开头。当预编译器看到这些常量之一时,它会自动将其替换为等效的整数。当你初始化你是 int 旋转并将它设置为其中之一时,int 保存常量已初始化的值。因此,如果您想直接检查 Surface.Rotation,您可能需要在每次检查时都调用 getRotation();

类似于:

Display display = getWindowManager().getDefaultDisplay();
if(display.getRotation() == Surface.ROTATION_0)
{
//whatever you need to do here
}

等等

或者您可以简单地检查这些常量计算的整数。

int rotation = getWindowManager().getDefaultDisplay().getRotation;
if(rotation == 0)
{
//whatever you need to do here
}

等等

我个人会选择第二个选项。不必为每次检查都调用 getRotation 可能意味着运行时的小改进,但尽可能减少处理器使用是一个好习惯。

关于android - getDefaultDisplay().getRotation();总是返回相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16852774/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com