【发布时间】:2014-03-27 01:44:39
【问题描述】:
所以我知道相机的默认行为是在拍照时暂停。我正在尝试覆盖此行为并在后台拍摄多张照片时让相机预览继续运行。
有没有办法做到这一点?
我还补充说我正在使用相机预览而不是相机意图
【问题讨论】:
-
实现自己的捕获代码,而不是使用内置的相机应用程序
-
能否请您扩展一下。我使用的是相机预览而不是应用程序本身。是否可以截取表面视图的屏幕截图?
所以我知道相机的默认行为是在拍照时暂停。我正在尝试覆盖此行为并在后台拍摄多张照片时让相机预览继续运行。
有没有办法做到这一点?
我还补充说我正在使用相机预览而不是相机意图
【问题讨论】:
我的应用实际上使用了 OCR,我需要在不停止相机预览的情况下拍摄几张照片/帧并传递给 ocr。
我想我最初的问题可能会更清楚一点。然而,为了任何可能有类似问题的人的利益,我通过 setPreviewCallback 方法每 2 秒从相机获取帧来解决它,该方法返回一个字节数组,然后您可以将其转换为位图。
mCamera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] _data, Camera _camera) {
int width = parameters.getPreviewSize().width;
int height = parameters.getPreviewSize().height;
ByteArrayOutputStream outstr = new ByteArrayOutputStream();
Rect rect = new Rect(0, 0, width, height);
YuvImage yuvimage = new YuvImage(_data,
ImageFormat.NV21, width, height, null);
yuvimage.compressToJpeg(rect, 100, outstr);
Bitmap bmp = BitmapFactory.decodeByteArray(
outstr.toByteArray(), 0, outstr.size());
}
});
【讨论】:
我假设您想实现一个全景应用程序。 1.如果你想实现三星相机这样的应用程序,你必须修改原生相机代码。但是,它不是开源的。 2.如果想用Java实现,可以参考Android的Panorama source code。
【讨论】: