Java Android表面类Surface.ROTATION无法解析或不是字段

Java Android表面类Surface.ROTATION无法解析或不是字段,java,android,rotation,android-camera,surfaceholder,Java,Android,Rotation,Android Camera,Surfaceholder,我正在尝试修复我的相机应用程序。当我以横向模式握住相机时,它会在屏幕上横向预览。 我在堆栈上找到了此修复程序: 在我的CameraSurfaceView类构造函数中,我得到如下曲面this.surface=getHolder()。 在surfaceChanged方法中,我检查显示器相对于Surface.rotation旋转0、90180和270度(以下方法)。但是,旋转表面常数中的每一个都带有以下错误下划线,旋转u无法解析或不是字段。我不确定我做错了什么。我的CameraSurfaceView与

我正在尝试修复我的相机应用程序。当我以横向模式握住相机时,它会在屏幕上横向预览。 我在堆栈上找到了此修复程序:

在我的
CameraSurfaceView
类构造函数中,我得到如下曲面
this.surface=getHolder()。
在
surfaceChanged
方法中,我检查显示器相对于Surface.rotation旋转0、90180和270度(以下方法)。但是,
旋转
表面常数中的每一个都带有以下错误下划线,
旋转u无法解析或不是字段
。我不确定我做错了什么。我的
CameraSurfaceView
与我的活动是分开的,所以我想知道显示是否与此有关? 希望这是正确的解释,如果你需要更多的代码或任何让我知道。我提前对此表示感谢

import java.io.IOException;
import java.util.List;

import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.WindowManager;
import android.widget.ZoomControls;


public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height) {
    int orientation = 0;

    Camera.Parameters params = Cam.getParameters();

    WindowManager window = (WindowManager) getSystemService(Context.WINDOW_SERVICE); 
    android.view.Display display = window.getDefaultDisplay();

        if(display.getRotation() == Surface.ROTATION_0)
        {
            params.setPreviewSize(height, width);                           
            Cam.setDisplayOrientation(90);
        }

        if(display.getRotation() == Surface.ROTATION_90)
        {
            params.setPreviewSize(height, width);                           
        }

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

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


    List<Camera.Size> previewSizes = params.getSupportedPreviewSizes();
    Camera.Size previewSize = getBestPreviewSize(width, height);
    params.setPreviewSize(previewSize.width, previewSize.height); 



     int zoom = 0;
     params.setZoom(zoom);

    zoomControls.setOnZoomInClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Camera.Parameters params = Cam.getParameters();
                maxZoomLevel = params.getMaxZoom();
                    if(currentZoomLevel < maxZoomLevel){
                        currentZoomLevel++;
                        Cam.startSmoothZoom(currentZoomLevel);
                    }
            }
        });

    zoomControls.setOnZoomOutClickListener(new View.OnClickListener(){
            public void onClick(View v){
                Camera.Parameters params = Cam.getParameters();
                maxZoomLevel = params.getMaxZoom();
                    if(currentZoomLevel > 0){
                        currentZoomLevel--;
                        Cam.startSmoothZoom(currentZoomLevel);
                    }
            }
        });    


    Cam.setParameters(params);

    try {
        Cam.setPreviewDisplay(Surface);
    } catch (IOException e) {
        e.printStackTrace();
    }

    Cam.startPreview();
}
import java.io.IOException;
导入java.util.List;
导入android.content.Context;
导入android.hardware.Camera;
导入android.hardware.Camera.AutoFocusCallback;
导入android.util.Log;
导入android.view.SurfaceHolder;
导入android.view.SurfaceView;
导入android.view.view;
导入android.view.WindowManager;
导入android.widget.ZoomControls;
公共无效表面更改(表面文件夹持有者,整型格式,整型宽度,
整数高度){
int方向=0;
Camera.Parameters params=Cam.getParameters();
WindowManager窗口=(WindowManager)getSystemService(Context.window\u服务);
android.view.Display=window.getDefaultDisplay();
if(display.getRotation()==Surface.ROTATION\u 0)
{
参数setPreviewSize(高度、宽度);
凸轮设置显示方向(90);
}
if(display.getRotation()==Surface.ROTATION_90)
{
参数setPreviewSize(高度、宽度);
}
if(display.getRotation()==Surface.ROTATION_180)
{
参数setPreviewSize(高度、宽度);
}
if(display.getRotation()==Surface.ROTATION_270)
{
参数setPreviewSize(高度、宽度);
凸轮设置显示方向(180);
}
List previewSizes=params.getSupportedPreviewSizes();
Camera.Size previewSize=getBestPreviewSize(宽度、高度);
params.setPreviewSize(previewSize.width、previewSize.height);
int zoom=0;
参数设置缩放(缩放);
ZoomControl.setOnZoomInClickListener(新视图.OnClickListener()){
公共void onClick(视图v){
Camera.Parameters params=Cam.getParameters();
maxZoomLevel=params.getMaxZoom();
如果(currentZoomLevel0){
当前缩放级别--;
Cam.startSmoothZoom(当前ZoomLevel);
}
}
});    
Cam.SETPARAMES(参数);
试一试{
Cam.setPreviewDisplay(曲面);
}捕获(IOE异常){
e、 printStackTrace();
}
Cam.startPreview();
}

由于您有一个名为
Surface
的字段,因此无法从类中访问类
Surface

相反,你必须写作

android.view.Surface.ROTATION_0

或者重命名您的字段。

由于您有一个名为
Surface
的字段,因此您无法从类中访问类
Surface

相反,你必须写作

android.view.Surface.ROTATION_0

或者重命名字段。

您已将字段命名为
Surface
,这也是您试图引用常量的类型的名称。重命名字段,使其与类型的名称不同,然后导入
android.view.Surface
,您应该能够引用
Surface.ROTATION\u 0
等,不会出现任何问题


请注意,Java样式通常规定变量名以小写开头,类型以大写开头,这避免了这种类型的冲突

您已经命名了字段
Surface
,这也是您试图引用常量的类型的名称。重命名字段,使其与类型的名称不同,然后导入
android.view.Surface
,您应该能够引用
Surface.ROTATION\u 0
等,不会出现任何问题

请注意,Java样式通常规定变量名以小写开头,类型以大写开头,这避免了这种类型的冲突