我正在开发一个相机应用程序,基本上作为消息传递应用程序的一部分来附加图像等。该应用程序需要适用于 >= SDK 2.2 并且:
I can't尽可能多地使用默认的 Android 相机,因为:
该应用程序的性质决定了图像不应保存到磁盘上,一些 OEM(三星)喜欢这样做,而不给您选择。
我无法调用任何其他相机应用程序可以拦截的意图,因为这样该应用程序就可以保存图像。
我当前的问题是处理 Android 相机显然讨厌纵向的事实。具体来说,经过一番挖掘后,我正在监视显示屏,并轮流调用setDisplayOrientation(90)
。这可行,但表面视图尺寸也需要更改,并且必须在支持的尺寸内完成,否则参数设置会使应用程序崩溃。
我正在用我发现的另一个 SO 片段来做这个here https://stackoverflow.com/questions/5540981/picture-distorted-with-camera-and-getoptimalpreviewsize (the getBestPreviewSize()
方法),但它有一个明显的问题,我不敢相信我没有发现其他人也有这个问题。
的一部分takePicture
生命周期涉及调用PostView
图片回调。这是显示当前暂停的静止图像的内容SurfaceView
将通过 byteArray 返回到 raw 和/或 jpeg 回调的图像。我的问题是,这个图像在一些看似随机的测试设备上仍然是倾斜的!因此,行为是用户看到完美的 4:3 宽高比的动态相机图像,直到他们拍照并且呈现的图像被压扁。请注意,字节数组本身是正确的,当我构造Bitmap
在消息传递端点,它显示得很好,但这仍然是一个问题。
此时我不知道如何改变静态图像显示。谁能帮我这个?
Android相机系统一团糟。并且焊接到主板上后,相机芯片不会像肖像应用程序那样 - 所有回调都会在相机方向上溢出数据(您收到的缓冲区实际上是与本机相机应用程序共享的内存块) - 如果您想在应用程序运行时显示它在肖像模式下,您必须翻转此数据xy
.
我不会在相机使用的表面视图上显示图像,而是用透明覆盖它ImageView
并在那里绘制我的位图。
您可能(希望)在其中找到一些灵感javaocr项目 http://sourceforge.net/projects/javaocr/Android 守护进程在纵向模式下工作并通过实时预览绘制位图。 (请从git
,因为它现在正在发布,我正在努力使用 git 和 maven,请参阅演示目录)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)