gpt4 book ai didi

java - 相机 API : Cross device issues

转载 作者:搜寻专家 更新时间:2023-10-30 19:45:18 25 4
gpt4 key购买 nike

我正在开发一个相机应用程序,基本上是作为消息传递应用程序的一部分来附加图像等。该应用程序需要适用于 >= SDK 2.2 并且:

不能尽可能多地使用默认的 Android 相机,因为:

  1. 应用程序的性质决定了不应将图像保存到磁盘,一些 OEM(三星)喜欢这样做而不给您选择。

  2. 我无法调用任何其他相机应用程序可以拦截的 Intent ,因为那样该应用程序就可以保存图像。

我目前的问题是处理 Android 相机显然不喜欢纵向拍摄的事实。具体来说,经过一些挖掘后,我正在监视显示,并在旋转时调用 setDisplayOrientation(90)。这可行,但还需要更改表面 View 尺寸,并且必须在支持的尺寸内完成,否则参数设置会使应用程序崩溃。

我正在使用我发现的另一个 SO fragment 来执行此操作 here (getBestPreviewSize() 方法)但它有一个明显的问题,我不敢相信我还没有发现其他人有这个问题。

takePicture 生命周期的一部分涉及调用 PostView 图片回调。这是显示当前暂停的 SurfaceView 图像的静止图像,该图像将通过 byteArray 返回到 raw 和/或 jpeg 回调。我的问题是,这张图片在一些看似随机的测试设备上仍然存在偏差!因此,行为是用户看到完美的 4:3 宽高比的动态相机图像,直到他们拍摄照片并且呈现给他们的图像被压缩。请注意,字节数组本身是正确的,当我在消息传递端点构造 Bitmap 时,它显示正常,但这仍然是一个问题。

此时我看不出如何改变静止图像显示。谁能帮我解决这个问题?

最佳答案

Android 相机系统一团糟。在焊接到主板后,相机芯片不会喜欢 portait 应用程序 - 所有回调都会在相机方向溢出数据(你收到的缓冲区实际上是与 native 相机应用程序共享的内存块) - 如果你想在你的应用程序运行时显示它在纵向模式下,您必须将此数据翻转到 xy 上。

我不会在相机使用的表面 View 上显示图像,而是用透明的 ImageView 覆盖它并在那里绘制我的位图。

您可能(希望)从中找到一些灵感 javaocr project android deamon 在纵向模式下工作并通过实时预览绘制位图。 (请从 git checkout ,因为它现在正在发布,我正在努力使用 git 和 maven,请参阅演示目录)

关于java - 相机 API : Cross device issues,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12736881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com