android-摄像机预览是横向的。我使用预览来显示相机在屏幕上看到的内容。我可以让所有的工作精细,表面创建,表面集和表面显示。然而,在纵向模式下,它总是以不正确的90度角显示图片。我知道,使用以下代码可以使图片变得清晰:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);但是,我在一个包含其他元素的活动中有预览视图,我的活动在景观模式下显示是没有意义的。(默认情况下是禁用的)所以我想知道有没有改变预览的方向?让我剩下的活动正确地显示在肖像模式下?还是要旋转预览以使其正确显示?
3 回答
慕村225694
TA贡献1880条经验 获得超4个赞
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
if (isPreviewRunning) {
mCamera.stopPreview();
}
Parameters parameters = mCamera.getParameters();
Display display = ((WindowManager)getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
if(display.getRotation() == Surface.ROTATION_0) {
parameters.setPreviewSize(height, width);
mCamera.setDisplayOrientation(90);
}
if(display.getRotation() == Surface.ROTATION_90) {
parameters.setPreviewSize(width, height);
}
if(display.getRotation() == Surface.ROTATION_180) {
parameters.setPreviewSize(height, width);
}
if(display.getRotation() == Surface.ROTATION_270) {
parameters.setPreviewSize(width, height);
mCamera.setDisplayOrientation(180);
}
mCamera.setParameters(parameters);
previewCamera(); }And the previewCamera method :public void previewCamera() {
try {
mCamera.setPreviewDisplay(mSurfaceHolder);
mCamera.startPreview();
isPreviewRunning = true;
} catch(Exception e) {
Log.d(APP_CLASS, "Cannot start preview", e);
}}
ITMISS
TA贡献1871条经验 获得超8个赞
public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
mCamera.setDisplayOrientation(90);
try {
mCamera.setPreviewDisplay(holder);
mCamera.setPreviewCallback(new PreviewCallback() {
@Override
public void onPreviewFrame(byte[] data, Camera camera) {
}
});
} catch (Exception e) {
e.printStackTrace();
}}- 3 回答
- 0 关注
- 713 浏览
添加回答
举报
0/150
提交
取消
