【问题标题】:Preview size wtith CWAC-Camera使用 CWAC-Camera 预览尺寸
【发布时间】:2013-12-26 22:34:04
【问题描述】:

我和https://github.com/commonsguy/cwac-camera争吵了一段时间

设法创建了我的自定义 CameraFragment 和自定义自定义 CameraHost

我已经覆盖了getPictureSizegetPreviewSize。通过这两种方法,我可以找出可以使用哪些Sizes。我的总体想法是捕获一个方形图像,并在捕获之前对其进行预览。

我一直在测试,没有设备返回方形格式的Size,所以我想最好的方法是采用最接近我需要的尺寸。就像如果我需要一个 800x800 平方的图像,我将返回最近的Size,即(例如)1280x1024

到目前为止一切顺利。问题如下:

文档状态:

通常,您的 CameraHost 将使用 getPreviewSize() 调用

该死的;我的 Nexus5 设备从不触发此方法,但 Genymotion 模拟器可以。因此,在我的模拟器中,我可以创建自定义预览大小,而我的真实设备无法做到这一点。 所以我需要一些帮助来解决这个问题。为什么只是“通常”?我该怎么做才能将其更改为“始终”?

在第二个学期,我需要一些提示:如果我想要一个平方预览大小,我知道默认情况下它不会可用 Sizes 返回由 getSupportedPreviewSizes,什么我可以显示一个正方形吗?也许在CameraFragment 上覆盖一个正方形?甚至可能吗?还是我应该采用其他方法?

无论如何,恭喜图书馆;这是绝对清楚的,有这么多的选择。无需担心“某些设备”。作为一名 Android 开发人员,这真是太棒了。

谢谢。

【问题讨论】:

  • 对不起,我现在正在度假。下周回来后,我会尽力提供更多帮助。
  • @CommonsWare 是这样想的。尽情享受吧!

标签: android camera commonsware-cwac


【解决方案1】:

为什么只是“通常”?我该怎么做才能将其更改为“始终”?

引用文档:

如果getRecordingHint() 返回ANYVIDEO_ONLY,则CameraHost 通过getPreferredPreviewSizeForVideo() 而不是getPreviewSize() 提供预览大小。如果您希望对视频使用不同的预览尺寸,请将其返回,否则返回 null,我们将使用来自 getPreviewSize() 的结果。

在 API 级别 11+ 上,SimpleCameraHost getPreferredPreviewSizeForVideo() 的实现委托给 Camera.Parameters 上的 getPreferredPreviewSizeForVideo() 实现,但已知为其返回较差值的设备除外。

我可以做些什么来显示一个正方形?也许在 CameraFragment 上覆盖一个正方形?

我会尝试将 CameraView 直接放在您自己的 UI 中,然后在其上分层,使用 FrameLayoutRelativeLayout 来控制 Z 轴排序。

【讨论】:

  • 要获得方形预览,请执行以下操作:创建您自己的活动并膨胀 CameraFragment 并将其添加到活动中,如本示例中所示 toastdroid.com/2014/03/14/… 。将 R.id.container 引用的 FrameLayout 替换为您实现的自定义方形 FrameLayout,如 stackoverflow.com/a/10157573/1666063 - 现在您有一个方形预览。
  • 是的,要得到一个正方形,必须使用其他布局来覆盖不需要的区域,正如@espen-riskedal 所说。另请注意,预览大小必须与参数列表中的比例之一具有精确的比例。否则,您的预览将被拉伸。图片尺寸必须具有您在预览尺寸中选择的精确比例。否则,您输出的图片可能看起来与预览屏幕不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多