Android摄像头在旋转手机时改变尺寸
我正在开发一个使用摄像头的android应用程序。我对surfaceChanged()方法有问题。这是我的密码Android摄像头在旋转手机时改变尺寸,android,camera,orientation,surfaceview,Android,Camera,Orientation,Surfaceview,我正在开发一个使用摄像头的android应用程序。我对surfaceChanged()方法有问题。这是我的密码 public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { Log.e(TAG, "surfaceChanged"); if (mPreviewRunning) { mCamera.stopPreview(); } Camera.Parame
public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Log.e(TAG, "surfaceChanged");
if (mPreviewRunning) {
mCamera.stopPreview();
}
Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(w, h);
mCamera.setParameters(parameters);
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
e.printStackTrace();
}
mCamera.startPreview();
mPreviewRunning = true;
}
变量mPreviewRunning在开始时初始化为false。程序在水平方向上运行良好。但当我将手机旋转到垂直方向时,屏幕会旋转并拉伸。我不明白为什么会这样。请帮我解决这个问题。摄像头根本不会改变方向-CCD焊接到主板上,并提供像素,就好像它处于横向模式(最有可能),但是,操作系统可以在方向改变时重新启动您的活动,除非您在清单中禁用它 (并在此重新启动时重新创建曲面视图) 在本项目中查看处理相机管理的android演示: 您的错误是根据曲面大小设置预览大小-不要这样做。摄像头提供有限的可接受预览尺寸集,可以自由忽略其他设置(具体行为取决于设备)
预览大小意味着使用CCD分辨率,相机软件将在您的表面视图上按表面视图的大小进行渲染,并根据需要进行缩放 我通过在清单文件中将活动的方向固定到横向解决了这个问题。:)