Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 空白环绕Android摄像头预览_Java_Android_Screen_Whitespace_Preview - Fatal编程技术网

Java 空白环绕Android摄像头预览

Java 空白环绕Android摄像头预览,java,android,screen,whitespace,preview,Java,Android,Screen,Whitespace,Preview,这是我第一次接触安卓系统,我的预览版在顶部和底部都被空白包围,我不确定是什么原因造成的。非常感谢您的帮助 主要活动: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_p

这是我第一次接触安卓系统,我的预览版在顶部和底部都被空白包围,我不确定是什么原因造成的。非常感谢您的帮助

主要活动:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.baltimorehackathon.MainActivity" >

<SurfaceView
    android:id="@+id/camerapreview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</RelativeLayout>

这是因为您的Preview类为相机找到了最合适的纵横比,而它恰好不适合屏幕

您可以将背景颜色更改为其他颜色:

public Preview(Context context) {
    super(context);
    setBackgroundColor(Color.BLACK);
    ...
}
或者根本不使用此预览类:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SurfaceView surfaceView = new SurfaceView(this);
    setContentView(surfaceView);

    SurfaceHolder surfaceHolder = surfaceView.getHolder();
    surfaceHolder.addCallback(new SurfaceHolder.Callback() {
        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            mCamera.stopPreview();
            mCamera.release();
            mCamera = null;
        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            mCamera = Camera.open(0);
            try {
                mCamera.setPreviewDisplay(holder);
            } catch (IOException exception) {
                mCamera.release();
                mCamera = null;
            }
        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width,
                                   int height) {
            mCamera.startPreview();
        }
    });
}

这最终成为我相机上的一个定位问题。摄影机方向与视图分开。一个简单的
camera.setDisplayOrientation(90)
就成功了。

我在回答中解决了这个问题,但我接受了这一点,因为我认为这个代码对于将来引用它的其他人来说会更加简洁。
public Preview(Context context) {
    super(context);
    setBackgroundColor(Color.BLACK);
    ...
}
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SurfaceView surfaceView = new SurfaceView(this);
    setContentView(surfaceView);

    SurfaceHolder surfaceHolder = surfaceView.getHolder();
    surfaceHolder.addCallback(new SurfaceHolder.Callback() {
        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
            mCamera.stopPreview();
            mCamera.release();
            mCamera = null;
        }

        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            mCamera = Camera.open(0);
            try {
                mCamera.setPreviewDisplay(holder);
            } catch (IOException exception) {
                mCamera.release();
                mCamera = null;
            }
        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width,
                                   int height) {
            mCamera.startPreview();
        }
    });
}