我正在开发一个相机应用程序,基本上作为消息传递应用程序的一部分来附加图像等。该应用程序需要适用于 >= SDK 2.2 并且:
我不能尽可能多地使用默认的 Android 相机,因为:
该应用程序的性质决定了永远不应将图像保存到磁盘,并且一些 OEM(三星)喜欢在不给您选择的情况下这样做。
我不能调用任何其他相机应用程序可以拦截的意图,因为那个应用程序可以保存图像。
我目前的问题是处理Android相机显然讨厌纵向的事实。具体来说,经过一番挖掘后,我正在监视显示,并在旋转时调用setDisplayOrientation(90)
. 这可行,但表面视图尺寸也需要更改,并且必须在支持的尺寸内完成,否则参数设置会使应用程序崩溃。
我正在使用我在此处找到的另一个 SO 片段(getBestPreviewSize()
方法)来执行此操作,但它有一个明显的问题,我不敢相信我还没有发现其他人有。
生命周期的一部分takePicture
涉及调用PostView
图片回调。这是显示SurfaceView
将通过 byteArray 返回到 raw 和/或 jpeg 回调的当前暂停图像的静止图像的内容。我的问题是,这张图片在少数看似随机的测试设备上仍然存在偏差!所以行为是用户以完美的 4:3 纵横比看到动态相机图像,直到他们拍摄照片并且呈现给他们的图像被压扁。请注意,字节数组本身是正确的,当我Bitmap
在消息传递端点构造它时,它显示得很好,但这仍然是一个问题。
在这一点上,我看不到如何更改静止图像显示。谁能帮我这个?