当前位置: 首页 > 知识库问答 >
问题:

在android中将摄像头预览扩展到全屏

师俊健
2023-03-14

我正在为我的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_width="fill_parent"
android:layout_height="fill_parent"
>

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

共有3个答案

郦楷
2023-03-14

获取屏幕的尺寸

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

使用此宽度和高度获取预览大小。

楚彦
2023-03-14

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

您在代码中没有做的是将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...

      ....

    }

    ...
}

我希望这有帮助。要整合的关键部分是在这些内部评论之间

夔修伟
2023-03-14

我发现了问题。我添加了以下设置到Android清单文件

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

我可以全屏观看摄像机。

 类似资料:
  • 我的意图是有一个方形相机预览。 我没有1:1比例的相机预览可用(我在Nexus 5模拟器中),所以我的最佳尺寸可用为640 x 480,所以为了适应正方形预览,我将SurfaceView尺寸设置为与纵横比相等,但将屏幕外的边距偏移一半,以在屏幕上只保留裁剪的正方形。表面视图本身的大小和偏移量是正确的,但是相机预览本身仍然在正方形内显示压缩后的预览,而不是以正确的纵横比部分地在屏幕外显示。 有什么想

  • 我已经复制粘贴了我在stackoverflow上找到的一些代码,将默认的相机预览YUV转换成RGB格式,然后上传到OpenGL进行处理。这很好,问题是大部分中央处理器都忙于将YUV图像转换成RGB格式,这变成了瓶颈。 我想将YUV图像上传到GPU,然后在片段着色器中将其转换为RGB。我使用了在CPU上运行的Java YUV to RGB函数,并试图使其在GPU上运行。 这变成了一场小小的噩梦,因为

  • 我已经和https://github.com/commonsguy/cwac-camera 创建了我的自定义CameraFragment和自定义CameraHost。 我已经重写了getPictureSize和getPreviewSize。通过这两种方法,我能够找出可以使用的大小。我的总体想法是拍摄一幅方形图像,并在拍摄前预览它。 我一直在测试,没有设备返回正方形格式的大小,所以我想最好的方法是选

  • 问题内容: 我遇到问题,我想在UIView边界内解决,有什么 办法可以将Camera Preview添加到UIView吗?并在 UIView 顶部添加其他内容(按钮,标签等)? 我尝试使用AVFoundation框架,但没有足够的文档 的斯威夫特。 问题答案: 更新为SWIFT 5 您可以尝试如下操作: 在这里,我使用一个UIView称为PreviewView的相机来启动摄像机,然后在Previe

  • 表情测试 图片转文字 相框 拍摄图片

  • 摄像头用于采集图像和影像信息,通过模块间的组合完成各种创意活动。 净重量:8.1g 体积:24×24×22mm 参数 分辨率:1280×720 像素大小:3.4um×3.4um 最大图像传输速率:全尺寸 @ 30fps 视场角:100° 镜片结构:4G+IR 焦比:2.97 有效焦距:2.4mm 功耗:100uA(待机)~240mW(工作) 电源:USB总线电源 抗跌落能力:1m 工作温度:-30