在android中将相机预览拉伸到全屏

Posted

技术标签:

【中文标题】在android中将相机预览拉伸到全屏【英文标题】:Stretching camera preview to full screen in android 【发布时间】:2012-07-01 22:58:18 【问题描述】:

我将这个camera preview 应用程序用于我的 android 应用程序。

我想要全屏预览相机。因此,我使用 Android API 中的示例尝试将预览设置为全屏。这就是我正在尝试的方式:

if (!cameraConfigured) 
    Camera.Parameters parameters=camera.getParameters();
    Camera.Size size = getOptimalPreviewSize(mSupportedPreviewSizes, width, height);
    if (size != null) 
        parameters.setPreviewSize(size.width, size.height);

      camera.setParameters(parameters);
      cameraConfigured=true;
    

我使用相对布局作为我的布局。我的布局设置如下:

<android.view.SurfaceView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/preview"
android:layout_
android:layout_
>

我仍然无法在整个屏幕上预览我的相机。我想知道如何在整个屏幕上进行预览。

【问题讨论】:

【参考方案1】:

我发现了问题。我在 Android Manifest 文件中添加了以下设置

<supports-screens android:largeScreens="true"
                    android:normalScreens="true"
                    android:smallScreens="true" android:xlargeScreens="true"/>

我可以全屏查看相机。

【讨论】:

您好,您是否也有这样的问题,即全屏时相机预览图像会倾斜/拉伸以适应屏幕? ***.com/questions/16727836/…谢谢【参考方案2】:

我假设您的代码位于扩展 SurfaceView 的类中,并且您将把 SurfaceView 放置在与显示器一样大的 FrameLayout 中。

您在代码中没有做的是将 SurfaceView 设置为与以下代码块中通过获取布局并设置宽度和高度来完成的显示相同的大小。

我使用以下代码拉伸到屏幕的尺寸:

public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback 

    ...

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) 

      ...

      final DisplayMetrics dm = this.getResources().getDisplayMetrics();
      Camera.Parameters parameters = mCamera.getParameters();
      parameters.setPreviewSize(cameraSize.width, cameraSize.height);
      mCamera.setParameters(parameters);
      //Here you get the SurfaceView layout and subsequently set its width and height
      FrameLayout.LayoutParams frameParams = (FrameLayout.LayoutParams) this.getLayoutParams();
      frameParams.width = LayoutParams.MATCH_PARENT;// dm.widthPixels should also work
      frameParams.height = LayoutParams.MATCH_PARENT;//dm.heightPixels should also work
      this.setLayoutParams(frameParams);
      //And we should have things set now...

      ....

    

    ...

我希望这会有所帮助。要集成的关键部分是在那些内部 cmets 之间

【讨论】:

您好,您是否也有这样的问题,即全屏时相机预览图像会倾斜/拉伸以适应屏幕? ***.com/questions/16727836/...谢谢【参考方案3】:

获取屏幕尺寸

DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
int height = displayMetrics.heightPixels;
int width = displayMetrics.widthPixels;

使用这个宽度和高度来获得预览尺寸。

【讨论】:

【参考方案4】:

首先,获取显示宽度和高度:

   int dw = currentDisplay.getWidth();    // dw == display width
   int dh = currentDisplay.getHeight();   // dh == display height

然后循环浏览支持的预览尺寸,并选择最大的一个,如果 (size.width

稍后, --吉姆

【讨论】:

以上是关于在android中将相机预览拉伸到全屏的主要内容,如果未能解决你的问题,请参考以下文章

颤振将列拉伸到全屏高度

2960x1440 拉伸 Android 相机预览

Android 相机预览在预览中拉伸,而不是在拍照后

Android 自定义相机 Camera 预览变形拉伸问题

DIV+CSS,怎样将背景图片拉伸到全屏!! 谢谢各位了 急呀~~~

视频视图中的 Android 全宽