我已经和 https://github.com/commonsguy/cwac-camera 战斗了一段时间了
成功创建了我的自定义 CameraFragment
和自定义 CameraHost
。
我已经覆盖了 getPictureSize
和 getPreviewSize
。通过这两种方法,我可以找出可以使用哪些 Size
s。我的总体想法是捕获方形图像,并在捕获之前预览它。
我一直在测试,没有设备返回方形格式的 Size
,所以我想最好的方法是采用最接近我需要的 Size。就像如果我需要 800x800 的方形图像,我将返回最接近的 Size
,即(例如)1280x1024
到目前为止一切顺利。问题如下:
文档说明:
Usually, your CameraHost will be called with getPreviewSize()
该死的;我的 Nexus5 设备永远不会触发此方法,但 Genymotion 模拟器会触发。因此,在我的模拟器中,我可以创建自定义预览尺寸,而我的真实设备则无法做到这一点。 所以我需要一些帮助来解决这个问题。为什么只是“通常”?我该怎么做才能将其更改为“始终”?
在第二个学期,我需要一些提示:如果我想要一个平方预览尺寸,我知道默认情况下它不可用 Size
s 返回getSupportedPreviewSizes
,如何显示正方形?也许在CameraFragment
之上覆盖一个正方形?有可能吗?或者我应该采用其他方法吗?
无论如何,祝贺图书馆;它绝对清晰并且有很多选择。无需担心“某些设备”。作为一名 Android 开发者,这真是太棒了。
谢谢。
最佳答案
Why is it just "usually"? What can I do to change it to "always"?
引用文档:
If
getRecordingHint()
returnsANY
orVIDEO_ONLY
, though,CameraHost
supplies the preview size viagetPreferredPreviewSizeForVideo()
instead ofgetPreviewSize()
. If you wish to use a different preview size for video, return it, otherwise returnnull
and we will use the results fromgetPreviewSize()
instead.
在 API 级别 11+ 上,SimpleCameraHost
getPreferredPreviewSizeForVideo()
的实现委托(delegate)给 Camera 上的
,除了已知会返回较差值的设备。getPreferredPreviewSizeForVideo()
实现。参数
what can I do to display an square? Maybe overlaying a square on top of CameraFragment?
我会尝试将 CameraView
直接放入您自己的 UI 中,然后在其上分层一些内容,使用 FrameLayout
或 RelativeLayout
进行控制Z 轴排序。
关于android - 使用 CWAC 相机预览尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20792139/