【问题标题】:How to capture multiple photos through camera in Android如何在Android中通过相机拍摄多张照片
【发布时间】:2014-10-01 09:01:52
【问题描述】:

我知道这个问题已经被问过了,但我还没有找到一个可靠的解决方案。我研究了很多例子,但没有一个能正常工作。我从this post 中找到了一个示例。

我使用了 commonsware 源代码。它工作正常,但是当我使用代码时,我的相机以水平布局而不是垂直布局打开。

我知道有两种方法可以做到这一点。一个通过 Camera API,另一个通过 Intent 事物。为了捕获单个快照,我使用了意图部分,它工作得很好。

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                intent.setType("image/*");
startActivityForResult(Intent.createChooser(intent,"Select Picture"), RESULT_LOAD_IMAGE);

但这会一直点击图片,我的要求是我需要它在 5 张照片后停止点击图片。

我不知道如何实现这一点。

【问题讨论】:

    标签: android android-camera


    【解决方案1】:

    @Chris Hutchinson 在How to take multiple photos before dismissing camera intent? 上发布了这个答案

    我通过 SDK 文档发现,设备摄像头有一个替代意图操作,它以静止图像模式启动摄像头,并且在用户完成活动之前不会退出:

       Intent intent = new Intent(
       MediaStore.INTENT_ACTION_STILL_IMAGE_CAMERA);
       this.startActivity(intent);
    

    加上一个 ContentObserver 这正是我需要完成的。

    【讨论】:

    • “设备摄像头有一个替代意图操作,它以静止图像模式启动摄像头,并且在用户完成活动之前不会退出”——任何第三方应用程序的行为关于此Intent 操作取决于第三方应用程序的实施者,而不是您。没有要求任何相机应用程序“在用户完成活动之前不退出”。因此,您可能使用某些相机应用程序会出现这种行为,但不是全部。
    • 您可以使用 ContentObserver 跟踪点击了多少张照片,如果照片数量为 5 则您可以在其上方启动您的活动。
    • 相机应用程序不需要将其图像存储在您可以通过ContentObserver 轻松监控的位置,特别是对于通过ACTION_IMAGE_CAPTURE 或INTENT_ACTION_STILL_IMAGE_CAMERA 返回的图像。例如,不要求相机应用程序具有由MediaStore 索引的此类图像,而是将其留给调用相机的开发人员。
    【解决方案2】:

    但这会一直点击图片

    任何第三方应用程序与此Intent 操作和其他操作相关的行为取决于该应用程序的实施者。

    我的要求是我需要它在 5 张照片后停止点击图片。

    你无法强迫世界上的相机应用开发者在五张之后停止拍摄,或者强迫用户拍摄五张。

    我不知道如何实现这一点。

    使用Camera API。请注意,编写适用于所有设备的相机应用程序非常困难。

    【讨论】:

    • 为什么是负分?
    猜你喜欢
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多