总结:对于某些图片尺寸,将相机图片尺寸显式设置为支持的尺寸会导致在调用 Camera.takePicture() 后不调用回调。
详细信息:
我正在开发一个简单的相机应用程序,它使用 Camera API 来捕捉图像。它遵循 Camera 类文档中描述的准则,并在各种设备上可靠地工作。
调用 Camera.open() 后,应用调用 camera.getParameters() 获取 Camera.Parameters 对象,然后调用该对象的 getSupportedPictureSizes()。它遍历支持的图片尺寸并选择一个符合某些标准的尺寸对。然后调用 setPictureSize(),传入选定的宽度和高度。最后,它通过调用 camera.SetParameters() 并传入 Camera.Parameters 对象来设置相机参数。
我在使用 HTC Desire 620 时遇到问题。此设备上报告的支持图片尺寸之一是 1184x1184。如果我设置此图片大小然后调用 camera.takePicture(),则不会调用任何回调(快门、原始或 jpeg)并且相机对象似乎处于无效状态。如果我将图片大小明确设置为任何其他受支持的大小(正方形或矩形长宽比),则会调用回调。但对于 1184x1184 它们不是。
有人遇到过这种情况吗?有没有办法提前知道支持的图片尺寸是否会导致此类问题?我在这里缺少什么?
编辑:打字错误
最佳答案
我没有HTC Desire 620,所以我无法验证您的发现。但我在我的 Android 相机开发生涯中见过不少设备。您描述的问题是确实发生的情况之一。我宁愿忘记 Honeycomb 2.3 的日子,每个受支持的设备都需要自己的一套解决方法。但即使是后来的事情也从来都不是完美的。
例如,Galaxy Nexus 设备声称通过 getSupportedPreviewSizes() 支持 QVGA。但事实并非如此。将预览大小设置为 320x240 仍会在 onPreviewFrame() 中生成 640x480 字节数组。
许多错误与视频与预览大小有关。在纵向方向上会弹出一些错误。等等。
正如您所注意到的,有问题的设置通常只会导致回调永远不会到达。但始终使用 try...catch 包装 camera.setParameters() 和其他相机调用仍然是一个好习惯。
密切关注奇怪的依赖关系:例如夜景不能与连续对焦共存。不幸的是,我们所知的 Camera API 无法提供此类信息。
如果您浏览处理各种相机设备的开源项目,您会发现它们会跟踪不成功的设置(参数集),并且只会在这些设置上失败一次。
更新 我遇到的一个不明显的依赖关系是在设置预览大小和设置图片大小之间。例如。后者为16:9宽高比时,画面无法设置为4:3。
更新 和 here 是关于三星 Galaxy S3 中“支持的”图片尺寸错误的故事。使用它会导致相机错误 1001。
关于android - 某些图片尺寸导致 Camera.takePicture() 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30239292/
我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr
我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r
我是Rails的新手,所以请原谅简单的问题。我正在为一家公司创建一个网站。那家公司想在网站上展示它的客户。我想让客户自己管理这个。我正在为“客户”生成一个表格,我想要的三列是:公司名称、公司描述和Logo。对于名称,我使用的是name:string但不确定如何在脚本/生成脚手架终端命令中最好地创建描述列(因为我打算将其设置为文本区域)和图片。我怀疑描述(我想成为一个文本区域)应该仍然是描述:字符串,然后以实际形式进行调整。不确定如何处理图片字段。那么……说来话长:我在脚手架命令中输入什么来生成描述和图片列? 最佳答案 对于“文本”数
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我需要一个非常简单的字符串验证器来显示第一个符号与所需格式不对应的位置。我想使用正则表达式,但在这种情况下,我必须找到与表达式相对应的字符串停止的位置,但我找不到可以做到这一点的方法。(这一定是一种相当简单的方法……也许没有?)例如,如果我有正则表达式:/^Q+E+R+$/带字符串:"QQQQEEE2ER"期望的结果应该是7 最佳答案 一个想法:你可以做的是标记你的模式并用可选的嵌套捕获组编写它:^(Q+(E+(R+($)?)?)?)?然后你只需要计算你获得的捕获组的数量就可以知道正则表达式引擎在模式中停止的位置,你可以确定匹配结束
我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm
我目前正在用Ruby编写一个项目,它使用ActiveRecordgem进行数据库交互,我正在尝试使用ActiveRecord::Base.logger记录所有数据库事件具有以下代码的属性ActiveRecord::Base.logger=Logger.new(File.open('logs/database.log','a'))这适用于迁移等(出于某种原因似乎需要启用日志记录,因为它在禁用时会出现NilClass错误)但是当我尝试运行包含调用ActiveRecord对象的线程守护程序的项目时脚本失败并出现以下错误/System/Library/Frameworks/Ruby.frame
一段时间以来,我一直在使用open_uri下拉ftp路径作为数据源,但突然发现我几乎连续不断地收到“530抱歉,允许的最大客户端数(95)已经连接。”我不确定我的代码是否有问题,或者是否是其他人在访问服务器,不幸的是,我无法真正确定谁有问题。本质上,我正在读取FTPURI:defself.read_uri(uri)beginuri=open(uri).readuri=="Error"?nil:urirescueOpenURI::HTTPErrornilendend我猜我需要在这里添加一些额外的错误处理代码...我想确保我采取一切预防措施来关闭所有连接,这样我的连接就不是问题所在,但是我
我在思考流量控制的最佳实践。我应该走哪条路?1)不要检查任何东西并让程序失败(更清晰的代码,自然的错误消息):defself.fetch(feed_id)feed=Feed.find(feed_id)feed.fetchend2)通过返回nil静默失败(但是,“CleanCode”说,你永远不应该返回null):defself.fetch(feed_id)returnunlessfeed_idfeed=Feed.find(feed_id)returnunlessfeedfeed.fetchend3)抛出异常(因为不按id查找feed是异常的):defself.fetch(feed_id