首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Zbar扫描仪和自动聚焦

Zbar扫描仪和自动聚焦
EN

Stack Overflow用户
提问于 2013-11-08 00:31:49
回答 2查看 2K关注 0票数 0

我已经使用了android的zbar扫描仪,它可以很容易地捕获条形码。但问题是,在具有自动对焦功能的手机上,它捕获条形码的速度太快,无法正确检测到条形码。只要它能多等几毫秒,它就能捕捉到更清晰的图像,从而不会显示“找不到”页面。

我该如何解决这个问题?是否有条款延迟对条形码的关注?可能是捕获图像的延迟?

EN

回答 2

Stack Overflow用户

发布于 2013-11-17 21:14:45

您是在谈论示例代码CameraTestActivity.java吗?

实现对相似扫描结果进行计数的计数器。如果扫描结果保持不变(例如连续10次),我们可以假设结果是相当可靠的。

票数 0
EN

Stack Overflow用户

发布于 2014-06-14 14:00:47

我真的很喜欢@Juuso_Ohtonen的回复,实际上只是在我自己的阅读器中使用了它,但是如果你想要AutoFocus延迟,你可以创建一个Camera.AutoFocusCallback对象并用.postDelayed实现它的onAutoFocus方法。然后在摄影机camera.autoFocus()方法中使用此对象。

代码语言:javascript
运行
复制
// Mimic continuous auto-focusing
Camera.AutoFocusCallback autoFocusCB = new Camera.AutoFocusCallback() {
    public void onAutoFocus(boolean success, Camera camera) {
        autoFocusHandler.postDelayed(doAutoFocus, 1000);
    }
};

这一部分在扩展SurfaceView的类中使用,该类实现surfaceChanged();

代码语言:javascript
运行
复制
public CameraPreview(Context context, Camera camera,
                      PreviewCallback previewCb,
                      AutoFocusCallback autoFocusCb) {
    super(context);
    mCamera = camera;
    previewCallback = previewCb;
    autoFocusCallback = autoFocusCb;

    // Install a SurfaceHolder.Callback so we get notified when the
    // underlying surface is created and destroyed.
    mHolder = getHolder();
    mHolder.addCallback(this);

    // deprecated setting, but required on Android versions prior to 3.0
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    /*
     * If your preview can change or rotate, take care of those events here.
     * Make sure to stop the preview before resizing or reformatting it.
     */
    if (mHolder.getSurface() == null) {
        // preview surface does not exist
        return;
    }

    // stop preview before making changes
    try {
        mCamera.stopPreview();
    } catch (Exception e) {
        // ignore: tried to stop a non-existent preview
    }

    try {
        mCamera.setPreviewDisplay(mHolder);
        mCamera.setPreviewCallback(previewCallback);
        mCamera.startPreview();
        mCamera.autoFocus(autoFocusCallback);
    } catch (Exception e) {
        Log.d("DBG", "Error starting camera preview: " + e.getMessage());
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19841373

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档