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();
}
});
}