gpt4 book ai didi

android自定义相机拉伸(stretch)surfaceview

转载 作者:太空宇宙 更新时间:2023-11-03 11:05:16 25 4
gpt4 key购买 nike

我遇到了相机 View 的问题,即相机的 View 被拉长了,不像默认相机应用程序或任何其他相机应用程序提供的那样提供正常 View 。我一直无法获得相机用来拉伸(stretch)大于屏幕尺寸的表面 View 。

 enter code here
private class SurfaceCallback implements SurfaceHolder.Callback {
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
camera = Camera.open();
camera.setPreviewDisplay(holder);
camera.setDisplayOrientation(getPreviewDegree(MainActivity.this));
camera.startPreview(); //
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
setCameraParameters();
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {

}
}
private int getPreviewDegree(Activity activity) {
int rotation = activity.getWindowManager().getDefaultDisplay()
.getRotation();
int degree = 0;

switch (rotation) {
case Surface.ROTATION_0:
degree = 90;
break;
case Surface.ROTATION_90:
degree = 0;
break;
case Surface.ROTATION_180:
degree = 270;
break;
case Surface.ROTATION_270:
degree = 180;
break;
}
return degree;
}

private void setCameraParameters() {

Camera.Parameters parameters = camera.getParameters();

List<Camera.Size> sizeList = parameters.getSupportedPreviewSizes();
if (sizeList.size() > 0) {
Camera.Size cameraSize = sizeList.get(0);

parameters.setPreviewSize(cameraSize.width, cameraSize.height);
}


sizeList = parameters.getSupportedPictureSizes();
if (sizeList.size() > 0) {
Camera.Size cameraSize = sizeList.get(0);
for (Camera.Size size : sizeList) {

if (size.width * size.height < 10 * 100) {
cameraSize = size;
break;
}
}
parameters.setPictureSize(cameraSize.width, cameraSize.height);
}

parameters.setPictureFormat(ImageFormat.JPEG);
parameters.setJpegQuality(100);
parameters.setJpegThumbnailQuality(100);

parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
camera.setParameters(parameters);

startOrientationChangeListener();
}

private void startOrientationChangeListener() {

OrientationEventListener mOrEventListener = new OrientationEventListener(MainActivity.this) {
@Override
public void onOrientationChanged(int rotation) {

if (((rotation >= 0) && (rotation <= 45)) || (rotation > 315)) {
rotation = 0;
} else if ((rotation > 45) && (rotation <= 135)) {
rotation = 90;
} else if ((rotation > 135) && (rotation <= 225)) {
rotation = 180;
} else if ((rotation > 225) && (rotation <= 315)) {
rotation = 270;
} else {
rotation = 0;
}
if (rotation == mOrientation)
return;
mOrientation = rotation;
updateCameraOrientation();
}
};
mOrEventListener.enable();
}

private void updateCameraOrientation() {
if (camera != null) {
Camera.Parameters parameters = camera.getParameters();

int rotation = 90 + mOrientation == 360 ? 0 : 90 + mOrientation;

if (mIsFrontCamera) {
if (rotation == 90) rotation = 270;
else if (rotation == 270) rotation = 90;
}
parameters.setRotation(rotation);

camera.setDisplayOrientation(90);
camera.setParameters(parameters);
}
}

最佳答案

您可以从这个项目开始。 https://github.com/pikanji/CameraPreviewSample

关于android自定义相机拉伸(stretch)surfaceview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34450772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com