有机会通过 Android NDK 相机访问来减少快门时间吗?

2024-04-30

我编写了一个 Android 应用程序,可以从相机捕获实时预览。快门时间短很重要,至少应该是恒定的。

目前我使用以下代码来实现低快门时间:

Parameters params = camera.getParameters();
params.setSceneMode(Parameters.SCENE_MODE_SPORTS);
params.setWhiteBalance(Parameters.WHITE_BALANCE_DAYLIGHT);
params.setFlashMode(Parameters.FLASH_MODE_OFF);
params.setFocusMode(Parameters.FOCUS_MODE_INFINITY);

params.setPreviewFpsRange(9000, 29453);
params.setPreviewFrameRate(29453);
params.setJpegQuality(100);
params.setPreviewFormat(ImageFormat.NV21);

params.setPreviewSize(1280,720);
params.setAntibanding(Parameters.ANTIBANDING_OFF);
params.setExposureCompensation(params.getMinExposureCompensation());
params.set("iso", 1250);
camera.setParameters(params);

我的手机固件似乎不支持 setSceneMode() (getSupportedSceneModes 返回空列表)。 “ISO”设置可能没有效果(还没有查看图片,只是计算了帧速率)。刚刚在某处找到了这段代码并使用了它......也许它只是错误的字符串?

到目前为止发生的情况是:帧速率在 9 到 29,453 fps 之间变化,这是唯一支持的帧速率范围。所以params.setPreviewFpsRange(29453, 29453);也不行。 在良好的光照条件下(正常白天、室内、直接对着窗户),帧速率较高(20-30 fps),而在中/低光照条件下(日光、室内、直接远离窗户),帧速率会变得非常低(8-10 fps)状况。

更详细地说:我不需要高帧速率,但需要低快门时间。收集的数据应用于室内导航(或:第一步的室内定位)。该应用程序需要在一个人正常行走时拍照,而不需要该人关心他/她如何携带手机。该人甚至可能正在跑步或“摆动”手机(就像您通常在走路时移动手臂一样)。因此,一旦快门时间太长,通常会出现很多“运动模糊”。这种情况与“我想拍一张照片”的情况有很大不同,在“我想要拍照”的情况下,照片试图保持相机稳定。我们实际上并不想获得“好照片”,而是想以某种方式时不时地检测到墙壁的一些边缘。我预计图片中会有很多“噪音”,但无论如何希望这能起作用......

我们的想法是,有可能使用 NDK 更好地控制相机参数。有没有人有 NDK 的经验并且可以回答我是否值得尝试?

附加信息:我使用 HTC Desire Z(也称为:“T-Mobile G2”或“HTC Vision”)作为测试设备。


最简洁的答案是不”。较长的答案以一个问题开始:您的应用程序不关心捕获,而只使用 YUV 预览帧,这是正确的吗?

作为没有 root 访问权限的标准下载应用程序,您无权直接访问相机(或其他)设备。你只有设置参数()API 来影响相机行为,因此您完全受 OEM 支配,无法通过此 API 公开哪些相机功能。

即使在已取得 root 权限的设备上,您的功能也受到限制,但现在受到设备驱动程序和特定相机 ISP 的规格的限制。

在这两种情况下,您都应该首先非常仔细地选择目标设备。我相信某些 Android 手机比 HTC Vision 允许更多的相机控制。例如三星S2的修改版http://pfittech.com/rom_pfittech_jb.html http://pfittech.com/rom_pfittech_jb.html在 1080p 下拥有稳定的 25 FPS。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有机会通过 Android NDK 相机访问来减少快门时间吗? 的相关文章

  • BLE 外设支持 Android-L 示例 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我希望有一个适用于 Android L 的 BLE 外设模式的示例 我的代码给了我奇怪的错误 即广告商太多 这没有任何意
  • 处理 Android 锁屏上的音量变化?

    我想做的是 能够在 android 4 4 上的锁屏上捕获音量增大 减小按钮操作 Google Cast 设计清单 https developers google com cast docs design checklist sender
  • startActivity overridePendingTransition 只显示进入动画

    基本上 我遇到的问题是只显示输入幻灯片动画 调用 Activity 不会产生动画 startActivity intent overridePendingTransition R anim right in partly R anim le
  • Google Play 商店中基于服务的 Android 应用程序

    我正在开发一个应用程序 该应用程序仅包含一些服务 没有任何活动 即没有 UI 基本上 当用户在他 她的设备上安装应用程序时 我希望有 2 到 3 个服务在后台运行 对此我有几个疑问 应用程序安装后我的服务将如何启动 我的BroadcastR
  • Android向后兼容技术

    我现在在开发基于最新 API 15 ICS 的 15 项活动 Android 应用程序方面取得了进展 现在我发现应用程序的主要功能主义者即使支持 android v4 也不向后兼容 例如 1 fragment事务动画 2 将StringSe
  • Android Facebook sdk 3.5 分享对话框

    您好 我正在为 android sdk 3 5 实现 facebook 共享对话框 但是我按照指南没有取得任何成功 FacebookDialog shareDialog new FacebookDialog ShareDialogBuild
  • Android 中的 java.util.Observable 是线程安全的吗?

    Android 中的 java util Observable 是线程安全的吗 这文档 http developer android com reference java util Observable html说只有deleteObser
  • 从 BroadcastReceiver 获取方法来更新 UI

    我正在尝试根据变量的变化更新用户界面BroadcastReceiver 因此 我需要调用一个扩展类的方法 以获取我提到的变量 BroadcastReceiver in MainActivity取决于但我无法以任何方式获得真正的返回值 扩展的
  • 游标索引越界异常

    打开后出现光标索引越界错误 数据库 请任何人告诉我如何打开现有数据库 sqllite Android 我想在数据库上触发一个选择查询 检索一些信息 public void getPatient SQLiteDatabase db Strin
  • 在后台服务中持续获取位置更新

    我正在开发需要在后台服务中持续获取位置更新的应用程序 我已经使用了它正在使用的后台粘性服务 但是 即使我添加了启动广播并在那里启动了服务 启动完成后服务也没有启动 服务启动并立即被杀死 另外 这不适用于奥利奥 服务在应用程序关闭几分钟后停止
  • Android BLE 扫描在后台几分钟后停止

    当我为公司开发新冠肺炎接触者追踪应用程序时 我在后台遇到了 Android 扫描停止问题 这是我尝试过的 添加前台服务 禁用手机中所有与电池相关的优化选项 启用后台运行的应用程序 测试设备 搭载 Android 10 的 Galaxy S2
  • 使用 mupdf android 库导航到特定页面

    我如何使用 muPDF 库导航到特定页面 或者有没有办法让图书馆不记得我最后在那个pdf文件中浏览的是哪一页 Uri uri Uri parse path Intent intent new Intent MainActivity getC
  • 我应该选择的最低 SDK 版本是多少? (截至2018年11月)

    据我所知 android studio 中默认的最小 SDK 设置是 15 我读到我应该增加它 因为没有多少人 或者可能没有 仍在使用该 android 版本 另外 我计划使用 android studio 中的一些新功能 这些功能仅适用于
  • 如何在Android网格视图中设置单元格大小?

    我正在尝试为应用程序制作一个带有大图标的网格视图 但我找不到任何有关修改 Android 上网格布局上的单元格大小的教程 有人可以给我一个例子或相关链接吗 Thanks 就像另一个一样适配器视图 http developer android
  • Android Drawable 绘图性能?

    在我看来 我有一个简单的 ARGB 可绘制对象 大约需要 2 毫秒才能绘制 但我可以在 0 5 毫秒内绘制与位图相同的文件 只是一些快速代码 我真的不能认为它是一个选项 优化可绘制对象的绘制速度的最佳方法是什么 这取决于可绘制的数量以及每个
  • 使用 UPI url 调用 PSP 应用程序

    我正在尝试创建一个商家应用程序 它将根据 NPCI 的指南生成一个 url 此 url 将作为意图共享 并且 PSP 应用程序 任何注册的银行应用程序 应该能够侦听该 url 并被调用 我已经形成了这样的网址 upi pay pa icic
  • 有没有办法在多个嵌套的 RecyclerView 之间共享同一个 LayoutManager

    我正在开发一个显示游戏列表的应用程序 在每个游戏的 itemView 内 我还有一个要显示的视频列表 预览和结构如下 我部署了一个RecyclerView作为窗口根视图 然后对于视频 我使用网格样式的RecyclerView来显示 所以这里
  • 如何更改 Android 12 启动屏幕中的图标形状?

    我想要矩形形状的启动屏幕图标 而不是 android 12 中的圆形形状 我不相信你可以 如果你看这里的第 3 点 https developer android com about versions 12 features splash
  • 在片段之间切换时底部导航栏会向下推

    在我的活动中 我有一个底部导航栏和框架布局来显示片段 一切正常 但问题是当我开始按顺序从 1 4 移动时 底部导航栏保持在其位置 但当我突然从 4 跳到2 然后底部导航栏就会超出屏幕 当再次单击同一项目时 它就会回到正常位置 该视频将清楚地
  • 膨胀类 android.support.design.widget.CoordinatorLayoute 时出错

    我正在尝试运行我的应用程序 但不断收到标题中列出的错误 我读过周围的内容 人们说尝试将主题更改为 AppCombat 主题 但这似乎不起作用 以下是我遇到的错误 Process com example jmeyer27 crazytiles

随机推荐

  • App.config 连接字符串相对路径

    我需要在 app config 中设置 sqlite 连接字符串 我想设置相对于调试 发布文件夹的路径 数据库文件将复制到这些文件夹
  • Windows命令行参数编码是什么?

    Windows 使用什么编码来传递给在 cmd exe 窗口中启动的程序的命令行参数 命令行参数的编码似乎不受使用控制台代码页设置的影响chcp 我将其设置为 UTF 8 代码页 65001 并使用 Lucida Console 字体 如果
  • Python 中的静态变量?

    在 C 中 我们有 static 关键字 它在循环中是这样的 for int x 0 x lt 10 x for int y 0 y lt 10 y static int number of times 0 number of times
  • 不循环查找

    我有两个表 我正在尝试从一个表中查找值以添加到另一个表中的值 目前我正在使用两个 for 循环 但它们运行缓慢 我是 R 新手 知道我应该避免循环以加快速度 但我不知道如何做 表1 几千行 37列 type cat1 cat2 cat3 c
  • C++ 的异步函数调用

    我需要提示如何在 C C 中实现异步函数调用 或 Windows 和 或 Linux 的框架 API 调用的名称 用例如下 父线程调用函数 该函数创建一个子线程并返回 因此调用是非阻塞的 父线程可以继续执行某些工作 例如 pthread j
  • React PropTypes:数字范围

    有没有更好的方法来验证如果数字在范围内 避免写作 PropTypes oneOf 1 2 3 4 5 6 7 8 9 10 根据文档 https reactjs org docs typechecking with proptypes ht
  • Sentry django 配置 - 记录器

    我正在尝试使用简单的日志记录并希望将错误 异常发送到 Sentry 我按照文档配置了 Sentry 并在我的开发人员上成功运行了测试 python manage py raven test 我添加了日志记录配置 如下所示哨兵文档 https
  • 使用 Struts 2 的 RESTful Web 服务

    我们正在评估一种教育活动设计 我们希望以 RESTful Web 服务的形式创建完整的后端 处理业务逻辑 这些服务可供各种应用程序使用 从 Struts 2 框架调用这些 Web 服务是个好主意吗 我读了几篇文档 但人们不鼓励这样做 我们很
  • REST 服务上的错误请求错误 使用 POST(json 数据)调用方法?

    您好 我是 RESTful WCF 的新手 我正在尝试使用 POST 对 Web 服务方法进行简单调用 这是我的代码 Service Interface code ServiceContract public interface IJson
  • 对于包含“+”的 Artifact 版本,Azure Artifact 发布失败

    我一直在尝试将 java 模块 jar 的工件发布到 Azure Artifact 但收到错误 404 经过一段时间的调试我已经意识到我的语义版本 https semver org spec item 10破坏了 URL 1 0 2 bet
  • Ruby Koans #75 test_constants_become_symbols,正确答案?

    我的问题建立在这个问题的基础上 Ruby Koan 常量变成符号 https stackoverflow com questions 5358727 ruby koan constants become symbols 我有以下代码 in
  • 使用MySqlCommand参数时如何查看命令字符串?

    代码如下 MySqlCommand cmd new MySqlCommand SELECT FROM DB name here WHERE some field some value cmd Parameters AddWithValue
  • 该应用程序引用 Payload Capacitor.Framework STATE_ERROR.VALIDATION_ERROR.50 中的非公共选择器

    今天 我在尝试将电容器应用程序上传到 App Store 时遇到了问题 该应用程序是在几天前发布的 据我了解 上传的任何关键内容都没有改变 我收到的错误也没有说明实际问题 The error looks the following 并说 该
  • Azure Function Docker 无法使用 http 触发器

    最近 我使用具有 HttpTrigger 的 Azure Function 节点 创建了一个 docker 映像 这是默认生成的基本 HttpTrigger 我正在 Macbook Pro MoJave 上开发此程序 并且安装了以下工具 N
  • 如何根据鼠标位置显示工具提示? - JavaFX

    我有一个stackPane 充满一个圆圈和几条线 我想在将鼠标悬停在 StackPane 上时显示工具提示 并且工具提示应包含X Y coords鼠标的 我知道如何获取鼠标的坐标 但我无法找到显示工具提示的方法 你们中有人能帮我吗 安舒尔
  • 如果包含字符串列表,则过滤 pyspark 数据帧

    假设我们有一个 pyspark 数据框 其列之一 column a 包含一些字符串值 并且还有一个字符串列表 list a 数据框 column a count some string 10 another one 20 third str
  • 在 OS X 中使用 PacketFilter 透明代理数据包 [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 有一个很酷的实用程序叫做sshuttle https github com apenwarr sshuttle 这取决于ipfw转发过
  • 递归 setTimeout() 在后台暂停

    我有一段代码 var logo blinking logo function logo blink logo fadeOut 10 delay 10 fadeIn 10 delay 20 fadeOut 10 delay 10 fadeIn
  • UML状态图中守卫和事件的区别

    我以为我可以区分event and guard 但我遇到了一个与守卫类似的事件 counter gt 4 pin is high switch on event 我将变量计数器从小于 4 的某个值更改为大于 4 的值作为事件 这是否意味着事
  • 有机会通过 Android NDK 相机访问来减少快门时间吗?

    我编写了一个 Android 应用程序 可以从相机捕获实时预览 快门时间短很重要 至少应该是恒定的 目前我使用以下代码来实现低快门时间 Parameters params camera getParameters params setSce