Android 安卓应用程序:人像手机但全景摄像头视图
我是java和android开发的新手。我正在开发一个在frameLayout窗口中具有摄影机视图的应用程序。我的应用程序设计为纵向,但窗口为横向<如图所示>。 正如大家所熟悉的,默认的相机视图是在横向视图中,所以我执行 camera.setDisplayOrientation(90)来旋转它 我的问题是,当图像在横向窗口下的纵向视图中旋转时,它会扭曲(挤压)。any1能否帮助我解决这个问题,any1能否为我提供一个修剪边界以达到所需比例的解决方案 !!我是stackoverflow的新用户,所以我不允许上传其他方面的图片Android 安卓应用程序:人像手机但全景摄像头视图,android,view,camera,Android,View,Camera,我是java和android开发的新手。我正在开发一个在frameLayout窗口中具有摄影机视图的应用程序。我的应用程序设计为纵向,但窗口为横向。 正如大家所熟悉的,默认的相机视图是在横向视图中,所以我执行 camera.setDisplayOrientation(90)来旋转它 我的问题是,当图像在横向窗口下的纵向视图中旋转时,它会扭曲(挤压)。any1能否帮助我解决这个问题,any1能否为我提供一个修剪边界以达到所需比例的解决方案 !!我是stackoverflow的新用户,所以我不允许上
___________________________________________
|____________Notification bar_______________|
| |
| My Application |
|___________________________________________|
| |
| |
| |
| |
| |
| |
| |
| camera View |
| ____________________ |
| | | |
| | | |
| | | |
| | | |
| | | |
| |____________________| |
| |
| |
| |
| |
| |
| |
| |
| |
|___________________________________________|
代码:
public void surfaceChanged(SurfaceHolder持有者,int格式,int宽度,int高度)
{
如果(预览_运行){
camera.stopPreview();
preview_running=false;
}
Camera.Parameters=Camera.getParameters();
列表大小=参数。getSupportedPreviewSizes();
int mFrameWidth=宽度;
int mframehight=高度;
{
double minDiff=double.MAX_值;
用于(相机尺寸:尺寸)
{
if(数学绝对值(尺寸高度-高度)
您找到解决方案了吗?我也遇到了同样的问题
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
{
if(preview_running){
camera.stopPreview();
preview_running = false;
}
Camera.Parameters parameters = camera.getParameters();
List<Camera.Size> sizes = parameters.getSupportedPreviewSizes();
int mFrameWidth = width;
int mFrameHeight = height;
{
double minDiff = Double.MAX_VALUE;
for (Camera.Size size : sizes)
{
if (Math.abs(size.height - height) < minDiff)
{
mFrameWidth = size.width;
mFrameHeight = size.height;
minDiff = Math.abs(size.height - height);
}
}
}
if( (width*height) != 0){
parameters.setPreviewSize(mFrameHeight, mFrameWidth);
System.out.println("TEST 1");
}
camera.setDisplayOrientation(90);
camera.setParameters(parameters);
camera.startPreview();
preview_running = true;
}