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

当预览大小设置为从支持的预览大小获得的特定值时,Android应用程序中的相机不会拍照

吴嘉禧
2023-03-14

我在我的应用程序中遇到了这个奇怪的问题,当我将parameters.set的预览尺寸(宽度、高度)设置为从支持的预览尺寸(Camera. Parameters.get支持的预览尺寸())中获得的特定值时,相机无法捕获图片。当我尝试使用其他尺寸(从支持的预览尺寸获得)时,相机会拍摄照片。

首先我打开相机

在Nexus 4上,我得到的值为768*432。下面是我循环通过getSupportedPreviewSizes()时所有大小的列表;

宽高1280*720
800*480
768*432
720*480
640*480
576*432
480*320
384*288
352*288
320*240
240*160
176*144

我将预览大小设置为768*432如下:-parameters.set预览大小(768,432);

然后设置其他一些参数,最后设置摄像头。setParameters(参数);和摄像头。startPreview()。

当我点击捕获按钮自动对焦回调执行:-

 Camera.AutoFocusCallback mAutoFocusCallback = new Camera.AutoFocusCallback() {
public void onAutoFocus(boolean success, Camera camera) {
            camera.setPreviewCallback(null);
            camera.takePicture(shutterCallback, rawCallback, jpegCallback);
        }
    };

然后是摄像头。takePicture不调用其余的回调,实际上是在这些回调中拍摄照片的。

如果我将预览大小设置为800*480或720*480或以上列表中的任何其他值,则相同的代码也可以使用。

截至目前,此问题仅在Nexus 4上报告。该摄像头在许多其他设备上运行良好。

有没有方法可以确保我在特定设备上选择的预览大小在该设备上始终有效?。

有人能解释一下吗?

提前非常感谢。哈什86

共有2个答案

徐瀚
2023-03-14

预览大小与硬件相关。不能保证从一台设备获得的预览大小可以在其他设备上使用。您必须检查每个设备上支持的预览大小。此外,您永远不能百分之百信任所有获得的预览大小。由于硬件原因,其中一些可能无法工作。当我想在三星的设备上设置一些预览大小时,我有过这样的经验,不是所有的预览大小都能工作。因此,有时,您必须尝试不同的预览大小。

夹谷鸿福
2023-03-14

拍照前请尝试停止预览。

 类似资料:
  • 我正在使用来显示我捕获的预览。我想使用宽度=1080,高度=1920作为预览。在哪里可以设置预览的大小? 我用谷歌搜索了答案,但它们都是相机版本一的。我正在使用android.hardware.camera2。

  • null null 当然,任何其他建议都将不胜感激。 注意:也有类似的问题,我花了几个小时来研究,但没有一个正确地解决了我的问题,也没有给出足够的细节。

  • 标题问题99.9%的答案如下: 当您在

  • 这个问题已经问了很多次了,但我似乎找不到我到底想要什么。我试图创建一个相机应用程序,我想在日志中显示YUV或RGB值时,我把相机指向一些颜色。对于RGB或相应的YUV颜色格式,该值必须为0...255范围。我可以管理它们之间的转换,因为在堆栈溢出方面有许多这样的例子。但是,我不能将这些值存储到3个单独的变量中并在日志中显示它们。 任何帮助都将不胜感激。

  • 我一直在努力在Android上制作我的自定义相机活动,但当旋转相机时,表面视图的纵横比会变得混乱。 在我的oncreate for the activity中,我设置了framelayout,它保存了显示相机参数的曲面视图。 然后,在曲面视图中,我设置要显示的相机参数 您可以看到,当手机旋转时,乐高男会变得更高、更瘦: 如何确保相机视图的纵横比正确?

  • 我写了这段代码,用相机拍照,然后将其转换为jpeg文件并将其上传到Parse.com作为ParseFile。 问题是,图片非常小(153 x 204像素),质量非常低。 我需要图片是至少5 MP质量和裁剪到300x300像素。 这是我现在使用的代码。 提前感谢。