当前位置: 代码迷 >> Android >> android camera 怎么实现拍照后不停止预览功能
  详细解决方案

android camera 怎么实现拍照后不停止预览功能

热度:276   发布时间:2016-04-28 01:27:59.0
android camera 如何实现拍照后不停止预览功能
根据android api 中 camera.takePicture(
This method is only valid when preview is active (after startPreview()). Preview will be stopped after the image is taken; callers must call startPreview() again if they want to re-start preview or take more pictures. This should not be called between start() and stop().
After calling this method, you must not call startPreview() or take another picture until the JPEG callback has returned.
发现要拍照需要调用的takePicture方法会停掉一下预览,我们现在自己的工程机器上发现,有一些低配置机上,调用这个方法后底层回调 Camera.PictureCallback要几秒钟时间,然后又只能在这个回调里重启预览startPreview(),导致画面有一个明显卡顿在拍照页面的效果。
现在我就想拍照不调用 camera.takePicture()可不可以实现?类似于有些连拍相机APP的效果(在网上下了一个连拍APP在我们工程机上可以实现,求其思路)!
------解决思路----------------------
拍照模式,肯定要停顿下,这个时间可以自己控制。
如果你是要实现抓拍,连拍的话,给你个思路吧,用摄像模式来截图,这样就可以抓拍,连拍不停顿了。
------解决思路----------------------
你的APP里面有没有类似如下的变量
mJpegPictureCallbackTime
mJpegCallbackFinishTime等。
加几个LOG你就能看到,照相模式不管你设置为多少,哪怕设置为零,也回停顿,因为要处理图片数据,也就是说,你把那些个东西设置为零是指个人感官上会几乎没有停顿的感觉,可是多次点击拍照按钮的时候会听见依然有停顿的声音。
要抓拍的话,还是得走摄像模式截图的办法。目前,个人是这样认为的。
------解决思路----------------------
我说的是类似,以前做的忘记了。
public long mShutterLag;
public long mShutterToPictureDisplayedTime;
public long mPictureDisplayedToJpegCallbackTime;
private long mRawPictureCallbackTime;
private long mJpegPictureCallbackTime;


看看  long mShutterLag 这个是快门延迟,其他的你自己找找吧,这些个时间全都可以设置为0;
------解决思路----------------------
连拍要去修改源码哦
------解决思路----------------------
你把每个时间打个Log出来,自己看下,根据时长,自己就可以判断是那个时间,还有你的源码是不是从CSDN上下载的?那么多个Time你自己打印log随便看,他们都是以毫秒为单位的,我说过,你可以把这些个Time全部注释,然后在声明的地方赋0;这个不是根本的解决办法,你不要老想着往这个方向去突破,用MediaPlayer做录制视频功能然后在截图,这样可以达到连续抓拍不停顿,当然其中还有很多要处理的地方。慢慢研究吧。
------解决思路----------------------
不知道源码里面有没有支持,找一下有没有zsl mode。这个可以实现你说的
  相关解决方案