【问题标题】:Android cwac-camera to take multiple photos?Android cwac-camera 拍摄多张照片?
【发布时间】:2014-10-14 03:44:43
【问题描述】:

标题可能不清楚,但我正在使用 CommonsWare 这个很棒的库(顺便说一句,在 DroidCon 见到你很高兴)来处理 Android 的碎片化相机 api 的臭名昭著的问题。

我想拍摄 5 张照片或相框……但不是同时拍摄。每一帧都应该相隔几毫秒,或者大概是在成功捕获前一张照片之后再拍摄一张照片。这个可以吗?

我正在关注演示中的独立实现,并简单地使用拍照

  mCapture.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            try {


                takePicture(true, false);


            }catch(Exception e){
                e.printStackTrace();
            }
        }
    });

将 true 传递给 takePicture() 因为我需要生成的位图。我还禁用了单拍模式,因为我想在前一张照片被拍完后立即拍摄另一张照片,并恢复预览

默认情况下,拍照的结果是返回 CameraFragment 进入预览模式,准备拍摄下一张照片。 相反,如果您只需要一张图片,或者您想发送 用户首先访问其他一些 UI,并且不希望预览启动 再次立即覆盖您的 CameraHost 中的 useSingleShotMode() 以 返回真。或者,在您的设备上调用 useSingleShotMode() SimpleCameraHost.Builder,传入一个默认使用的布尔值。要么, 在您的 PictureTransaction 上调用 useSingleShotMode() 来控制它 单独的图片。

我正在寻找像 onPictureTaken() 或 CameraHost 内部类似的回调,这将允许我在释放相机之前立即拍摄另一张照片,但我看不到这样的任何东西。有人用这个库做过这样的事情吗?杰出的 CommonsWare 能否也对此有所了解(如果你看到了?)

谢谢!

【问题讨论】:

    标签: android android-camera commonsware-cwac cwac-camera


    【解决方案1】:

    从引用的段落阅读到下一个段落,其开头为:

    然后,您可能希望在 CameraHost 中使用自己的 saveImage() 实现来做任何您想做的事情,而不是重新开始预览。例如,您可以启动另一个活动来处理图像。

    如果你想要的,除了对你收到的图像做一些事情之外,你还可以在你的saveImage() 中再次调用takePicture()

    但是:

    • 即使启用了大堆,您也可能没有足够的堆空间来执行您正在尝试执行的操作。您可能需要为图片明确选择较低分辨率的图像。

    • 这并不完全在库的范围内。它可能会起作用,而且我对它的工作没有任何问题,但是能够在 M 秒内拍摄 N 张照片并不是我(非常非常缓慢地)抓挠图书馆的一部分。特别是,我认为我没有测试过在预览关闭的情况下拍照,我的代码在该区域可能存在一些问题。

    • 从长远来看,预览帧处理可能会比实际拍照更好。

    【讨论】:

    • 感谢您的回复。我正在尝试测试我可以从 2 张开始连续拍摄多少张照片,正如你所说..在 saveImage() 中再次调用 takePicture()。尽管如此,仅拍摄并保存了 1 张照片。我可能不需要将图像保存到磁盘,并且可能只需要对每个字节数组的引用......也许保留一个静态列表或其他东西。您认为删除对 super.saveImage() 的调用会有所帮助吗?至少拍多张照片?
    • 我研究了预览帧处理,但这会让我回到我最初使用您的库的原因......使相机体验在大多数设备上尽可能一致。这必须是最后的手段……
    • @JadeByfield:“你认为取消对 super.saveImage() 的调用会有所帮助吗?至少在拍摄多张照片时?” ——可能,但我对此表示怀疑。无论限制是我的库还是底层的Camera 东西,我都不能说,因为我从未尝试过你的提议。还要记住,即使你让它工作,它也不会在“几”毫秒内,至少在我如何定义“少数”方面。我会排除以几十到几百毫秒为单位的周期时间。
    • @JadeByfield:“这必须是最后的手段”——请记住,即使有预览帧,30fps 左右也相当不错。因此,您已经看到了几十毫秒,这没有实际拍照逻辑的开销。缺少制造商特定的突发模式,您不会比这更好。所以,这又回到了“几毫秒”的重要性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    相关资源
    最近更新 更多