jjzjj

Android Camera Api 2 触摸手动对焦

coder 2023-12-15 原文

我想制作带有触摸对焦的相机应用程序,但我对相机 API 2 有点困惑。我已经阅读了有关 LENS_FOCUS_DISTANCE 的内容,但我不明白如何使用它。你能帮忙吗?

在此先感谢您,祝您周末愉快!

最佳答案

Camera API2 开始时看起来很奇怪,但随后您会发现它非常简单。

这个问题的最佳答案是带有注释的代码:

private void captureImage() {
    try {
        //for do this you should have mCameraDevice and mCameraCaptureSession

        //get CaptureRequestBuilder.
        captureStillBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);

        //add target surfaces - for getting image data you should have instance on ImageReader
        //with OnImageAvailableListener that will be called when image will be captured
        //but for showing on screen you have to use SurfaceView or TextureView
        captureStillBuilder.addTarget(mImageReader.getSurface());

        //add some details for Request
        //in general: you have fields and values for it and you just set what value should be in each field
        // auto focus works only when whole control mode in auto
        captureStillBuilder.set(CaptureRequest.CONTROL_MODE, CaptureRequest.CONTROL_MODE_AUTO);
        // before capture lock focus
        captureStillBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER,
                CaptureRequest.CONTROL_AF_TRIGGER_START);
        // set area for focusing
        MeteringRectangle[] focusArea = new MeteringRectangle[1];            
        focusArea[0] = new MeteringRectangle(/*here set coordinates for focus on */);
        captureStillBuilder.set(CaptureRequest.CONTROL_AF_REGIONS, focusArea);

        // create callback for this capture
        CameraCaptureSession.CaptureCallback callback = new ...
        // just run capture to make focused photo
        mCameraCaptureSession.capture(captureStillBuilder.build(), callback, null);

    } catch (CameraAccessException e) {
        e.printStackTrace();
    }
}

关于Android Camera Api 2 触摸手动对焦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708146/

有关Android Camera Api 2 触摸手动对焦的更多相关文章

  1. ruby-on-rails - Foreman无法启动Nginx,但我可以手动启动。为什么? - 2

    我目前正在运行Foreman在暂存(Ubuntu)上,一旦我开始工作,就会切换到使用upstart。我的Procfile.staging看起来像这样:nginx:sudoservicenginxstartunicorn:bundleexecunicorn-c./config/unicorn.rbredis:bundleexecredis-serversidekiq:bundleexecsidekiq-v-C./config/sidekiq.yml我可以使用以下方法成功启动nginx:$sudoservicenginxstart然而,当我运行$foremanstart时,当其他三个进程成

  2. ruby - 手动更新 Carrierwave Uploader 安装的属性 - 2

    我无法对由载波uploader装载的属性使用model.update_attribute。SQL语句不会接受该值并将NULL添加到占位符。如果我从模型类中删除mount_uploader语句,它会正常工作。我正在从控制台进行故障排除并尝试在为数据库播种时添加一些属性,这阻碍了我的努力。想法?谢谢。更新:相关代码:classProfile我只是想从数据库种子文件重写:avatar字符串,同时从Rails控制台进行测试,如下所示:Profile.first.update_attribute(:avatar,'foo')当我注释掉mount_uploader行时,两者都有效。添加mount_

  3. ruby-on-rails - 选择具有多个预选值的标签 - 在数据库中手动插入的值 - 2

    我需要在select_tag中预先选择多个值。但我在表格空缺中“手动”添加空缺,如下所示:我的Controller:defcreate@hr_curriculum_generic=HrCurriculumGeneric.new(params[:hr_curriculum_generic])ifparams[:vacancy_ids].present?@vacancies_ids=params[:vacancy_ids]--我的表单:@vacancies_ids.eachdo|vacancy_id|#Armazenaosiddocurriculum,vagaedocargonatabel

  4. ruby-on-rails - 使用 Typheous 手动登录网站 - 2

    最近我在使用Mechanize来处理这种事情,但我想使用Typhoeus,我已经在其他地方使用了它。我想模仿Mechanize的行为,问题是我想登录到一个站点并以登录用户的身份执行请求。这是脚本的通用版本:require'rubygems'require'typhoeus'GET_URL='http://localhost:3000'POST_URL="http://localhost:3000/admins/sign_in"URL="http://localhost:3000/dashboard"USERNAME_FIELD='admin[email]'PASSWORD_FIELD=

  5. ruby - 是否可以使用机器人打开浏览器,手动操作页面,然后继续使用机器人? - 2

    我正在使用Ruby、SeleniumWebDriver和Nokogiri从网页中检索数据。加载正确的HTML后,我打印某个类的内容。例如,require"selenium-webdriver"require"nokogiri"browser=Selenium::WebDriver.for:chromebrowser.get"https://jsfiddle.net"doc=Nokogiri::HTML.parse(browser.page_source)doc.css('.aiButton').map(&:text).join(',')到目前为止,我发现最困难的部分是正确加载正确的HT

  6. ruby - 如何手动构建 AST? - 2

    我目前正在学习解析,但我对如何生成AST有点困惑。我编写了一个解析器,可以正确验证表达式是否符合语法(当表达式符合时它会保持沉默,否则会引发异常)。我从这里去哪里构建AST?我找到了很多关于构建我的LL(1)解析器的信息,但是关于构建AST的信息却很少。我当前的代码(用非常简单的Ruby编写,包括词法分析器和解析器)可在github上找到:https://gist.github.com/e9d4081b7d3409e30a57有人能解释一下我是如何从目前拥有的东西变成AST的吗?或者,如果您不熟悉Ruby,但知道C,您能告诉我如何为recursivedescentparsing中的C代

  7. ruby - 从我的 Ubuntu .profile 采购 rvm 只能手动工作,不能在登录时工作 - 2

    我在从我的Ubuntu10.04.profile获取Ruby版本管理器rvm时遇到问题。代码:[[-s"$HOME/.rvm/scripts/rvm"]&&."$HOME/.rvm/scripts/rvm"...从不做我期望的事情(即当我打开一个新的shell或开始一个新的session时给我rvm程序);但是如果我执行source.profile登录后在一个新的shell中,它可以工作!为什么当我手动获取它时它会工作,但在登录时不会自动? 最佳答案 看来Ubuntu处理其登录脚本的方式与大多数其他Linux发行版不同http://

  8. ruby - 如何使用消息和回溯手动创建异常 - 2

    如何使用回溯创建异常?我知道我们可以做这样的事情来实现这一目标:beginraiseStandardError,"message"rescueStandardError=>exceptionexception.backtraceend或者exception=StandardError.new("message")exception.set_backtrace(caller)但我正在寻找这样的东西:exception=StandardError.new("message",backtrace:caller)有没有一种方法可以使用自定义消息和回溯来初始化异常?

  9. ruby-on-rails - 如何使用 FactoryGirl 发送参数(而不是手动将参数作为散列发送)? - 2

    我有以下有效的rspec测试:it"redirectstothecreatedapi_key"dopost:create,:api_key=>{:api_identifier=>"asdfadsf",:verification_code=>"12345"}response.shouldredirect_to(ApiKey.last)#(oranyothertestfunction)end但我使用Factorygirl,所以我不必手动创建api_key。如何复制上述功能,但使用factorygirl?使用:it"redirectstothecreatedapi_key"dotest=Fa

  10. ABB机器人编程基础_手动示教+记录+修改点位数据的具体方法和步骤示例 - 2

    ABB机器人编程基础_手动示教+记录+修改点位数据的具体方法和步骤示例如下图所示,打开示教器,控制柜切换到手动模式,电机上电,找到程序编辑器,点击进入,如下图所示,点击进入例行程序,点击左下角的文件—新建例行程序,如下图所示,新建一个名称为R_PRO1的例行程序,然后点击显示例行程序,如下图所示,进入例行程序R_PRO1,如下图所示,回到主界面,找到手动操纵,点击进入选择机器人的动作模式,这里选择轴1-3进行举例说明,或者可以按下示教器上的快捷键进行快速切换动作模式,选择完成后点击确定,

随机推荐