【问题标题】:android camera preview brokenandroid相机预览坏了
【发布时间】:2014-07-29 20:59:46
【问题描述】:

我是一名初学者,正在开发一个简单的 Android 应用程序,我尝试使用相机和相机预览来拍照。

在尝试拍照时,我从 5 和 8 兆像素的图片中发现内存不足错误。因此,我尝试使用较小的相机预览尺寸。

这在我的 Moto X 和我的朋友 Galaxy Note 3 上效果很好,但在 Galaxy S4 和 HTC One 上会导致粉红色和绿色条纹(即您看不到相机预览)。

我一直在尝试寻找解决方案(目前唯一的解决方案是不更改相机预览大小),但找不到任何解决方案。

我来自 iOS 背景,拍照实际上是 5 分钟的编码工作,无法相信它在 Android 上如此复杂。

谁有任何好的第三方库,可能有相机预览和拍照以在所有手机上工作?

我也可以发布一些代码,但其 99% 是来自 android 文档的基本代码。

如果有帮助,这是我的相机预览课程 -http://pastebin.mozilla.org/5698148

谢谢 克里斯

【问题讨论】:

标签: android android-camera


【解决方案1】:

【讨论】:

  • 获取图像的主要思想是这样的:1. 拍摄大图像 (8MP) 2. 将其保存到文件 3. 读取文件并在图像视图中显示之前压缩图像?跨度>
  • 我看到了与 deev2 (stackoverflow.com/questions/22390405/…) 提到的相同的错误
  • @ChristopherRivera 大多数情况下,如果您在将其保存到文件之前就遇到了 OOM 异常,那么就会发生其他事情。大多数情况下,人们会使用BitmapFactoryBitmap 图像创建方法将图像复制到内存中而没有意识到。因此,正如您正确陈述的那样,解决方法是将大图像立即保存到文件存储中。转储参考。然后在需要时从文件中检索压缩版本。
【解决方案2】:

所以过了很久才发现问题出在

params.setPictureSize(opt.width, opt.height);

由于某些原因,有些手机不喜欢你打电话时...

我现在只用

params.setPreviewSize(opt.width, opt.height); - 这有助于防止内存不足错误

然后在 ImageView 中显示之前缩放图像

如果有人需要代码,请告诉我...我会发布它

【讨论】:

  • 欢迎来到Android开发的精彩世界。虽然我没有遇到过这个问题。问题,您是否检查以确保您的手机支持您设置的分辨率?需要Camera.Parameters#getSupported_____()" methods that tell you what the devices camera can and can't do. In this case, Camera.Parameters#getSupportedPreviewSize()" 来检查您设置的相机预览是否受支持。我想知道将预览设置为不受支持的东西是否会导致伪影。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多