0

从我目前的搜索来看,Android 相机意图不能指定图片大小。由于我的应用程序需要快速,我不想将大尺寸的图片保存在 sd 卡中,然后将其加载到小尺寸的 Bitmap 中。我认为这需要时间。另外,我需要一个灰度图像,而不是彩色位图。我知道如何转换它们,但同样需要时间。

我打算拍一张指定尺寸的图片,直接处理内存中YUV数据中的Y部分(灰度)。

那么这是否意味着我必须使用相机 API 编写自己的相机应用程序?

有什么好的例子吗?到目前为止,我检查的许多示例通常不考虑自动对焦。我在 XML 文件中添加功能:

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

我将自动对焦模式添加到相机参数中。

parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 

但它不起作用。所以我在相机按下按钮之前立即添加自动对焦命令。

preview.camera.autoFocus(myAutoFocusCallback);
preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);

但是自动对焦需要一些时间,直到预览变得清晰,才进行了拍照。另外,即使我不按下相机按钮,我也希望它能够自动对焦。我怎样才能很好地把自动对焦放在里面?

有什么好的例子吗?谢谢。

4

1 回答 1

2

Android 开发者指南有一个关于制作相机应用的教程:http: //developer.android.com/guide/topics/media/camera.html#custom-camera

您不需要在清单中同时添加相机和 camera.autofocus 功能。后者意味着第一个——尽管这不是一个真正的问题。

FOCUS_MODE_AUTO 并不意味着相机会连续对焦,只是它会通过回调函数在某个点使用自动对焦(而不是手动对焦)。如果您希望相机自行对焦,则需要 FOCUS_MODE_CONTINUOUS_PICTURE。它在文档中进行了解释。

至于在相机对焦之前拍照:尝试从 autoFocusCallback 内部调用 takePicture() ,如下所示:

private AutoFocusCallback myAutoFocusCallback = new AutoFocusCallback() {
    @Override
    public void onAutoFocus(boolean success, Camera camera) {
        if (success) {
                camera.takePicture(shutterCallback, rawCallback, jpegCallback);
            }
    }
};
于 2013-03-07T09:44:28.983 回答