相关疑难解决方法(0)

如何在没有服务或线程预览的情况下拍摄相机?

是否可以在不显示相机预览的情况下拍摄图像?我要求我能够从线程或服务中捕获图像,而不会干扰前景应用程序,我不想显示相机预览,但我仍想在后台捕获图像并将其存储在设备中

android

26
推荐指数
1
解决办法
4万
查看次数

getSupportedPictureSize()返回Nexus4实际上不支持的值

我扩展了SurfaceView,用于显示相机输入,用于非常简单的相机应用程序.为了找到每个设备的最佳预览大小,我使用了这个示例代码,该代码几乎用于我见过的所有开源相机应用程序:

    List<Camera.Size> sizes = parameters.getSupportedPreviewSizes();
    double minDiff = Double.MAX_VALUE;
    for (Camera.Size size : sizes) {
        if (Math.abs(size.width - width) < minDiff) {
        screenWidth = size.width;
        screenHeight = size.height;
        minDiff = Math.abs(size.width - width);
        }
    }
Run Code Online (Sandbox Code Playgroud)

到目前为止,一切都完美无缺.

现在,由于应用程序的性质,我必须在会话过程中在内存中保留两个位图,并且为了简单起见(避免在测试期间出现内存问题)我使用了与PICTURE SIZE相同的代码(替换了getSupportedPreviewSizes()和getSupportedPictureSizes()).虽然我必须决定为每个设备选择最佳图片尺寸的其他方法,但在大多数设备上一切都很好用.

最近,在Nexus 4设备上进行测试时,上述循环无法选择最佳图像尺寸.经过调查,我发现getSupportedPictureSizes()函数返回一个值,即1280*960,而Nexus 4相机实际上并不支持它.那么,如何解决这个问题呢?我的意思是,这个函数不应该只返回设备的CAMERA支持的值吗?我相信会有其他设备出现同样的问题我无法测试.关于如何解决这个问题的任何线索?

更新:发生的事情是,它接受错误的参数没有任何错误,它返回的图像是扭曲的,我也会尝试在这里得到一张图片.此外,没有运行时异常.

android surfaceview android-camera nexus-4

7
推荐指数
2
解决办法
5005
查看次数

标签 统计

android ×2

android-camera ×1

nexus-4 ×1

surfaceview ×1