标题可能不清楚,但是我使用CommonsWare的这个很棒的库(很高兴见到你在DroidCon btw)处理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(),因为我需要生成的Bitmap。我也禁用了单拍模式,因为我想在上一张照片拍完后立即拍摄另一张照片,然后重新开始预览
默认情况下,拍照的结果是返回 CameraFragment预览模式,准备拍下一张照片。 相反,如果你只需要一张图片,或者你想发送一张图片 用户首先使用其他UI,不希望预览启动 马上再次覆盖你的CameraHost中的useSingleShotMode() 返回true。或者,在你的上面调用useSingleShotMode() SimpleCameraHost.Builder,传入一个默认使用的布尔值。要么, 在PictureTransaction上调用useSingleShotMode()来控制它 个人照片。
我正在寻找像onPictureTaken()或CameraHost内部类似的回调,这样我可以在释放相机之前立即拍摄另一张照片,但我不会看到这样的事情。有没有人用这个库做过这样的事情?有抱负的CommonsWare能不能对此有所了解(如果你看到这个?)
谢谢!
答案 0 :(得分:1)
读过引用的段落到下一段,开头是:
然后,您可能希望在CameraHost中使用自己的saveImage()实现来执行任何操作,而不是重新启动预览。例如,您可以启动另一个活动来对图像执行某些操作。
如果您想要的是什么,除了对收到的图片做些什么外,您还可以在takePicture()
saveImage()
再次致电CameraHost
。
然而:
即使启用了大堆,您可能也没有足够的堆空间来执行您尝试的操作。您可能需要为图片明确选择较低分辨率的图像。
这不完全在库的范围内。它可以工作,我没有工作的问题,但能够在M秒内拍摄N张图片不是图书馆的痒,我(非常非常慢)抓。特别是,我不认为我已经测试过已经关闭预览的图片,并且我的代码中可能存在一些问题。
长期来看,您可能会更好地使用预览帧处理,而不是实际拍摄照片。