【发布时间】:2017-09-28 13:16:56
【问题描述】:
我正在尝试构建一个应用程序,该应用程序使用相机 API 每秒拍摄一张照片,持续 10 秒。 我按照此链接Android Camera API 中的教程进行了操作,并修改了代码以获取我的图片列表(请参见下面的代码)。一切都很完美......
现在,问题出在(我想)在 takePicture 方法上,因为它停止了预览,我需要在回调 onPictureTaken 中再次启动它,这会导致一点时间屏幕冻结。
private void initializeCamera() {
// Create an instance of Camera
mCamera = getCameraInstance();
// Create our Preview view and set it as the content of our activity.
CameraPreview mPreview = new CameraPreview(this, mCamera);
FrameLayout preview = findViewById(R.id.camera_preview);
preview.addView(mPreview);
mCamera.setPreviewCallback(new Camera.PreviewCallback() {
@Override
public void onPreviewFrame(byte[] bytes, Camera camera) {
startRecognition();
}
});
}
private PictureCallback mPicture = new PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera camera) {
mCamera.startPreview(); // <----- Restart preview.. stop freeze
// Task to detect an object in the picture.. Do something
}
};
public void startRecognition() {
if (SystemClock.elapsedRealtime() - startedTime > 10000) {
// Detection has failed.. Do something
}
else {
// Get a frame each second
if (SystemClock.elapsedRealtime() - elapsedTime > 1000) {
elapsedTime = SystemClock.elapsedRealtime();
mCamera.takePicture(null, null, mPicture); // <---- Take picture but stop preview
}
}
}
来自 Android 相机文档:
8) 拍照后,预览显示将停止。要拍摄更多照片,请先再次调用 startPreview()。
有没有办法禁用 stopPreview,或者此方法在拍照时会执行的任何其他操作?
感谢您的帮助。
【问题讨论】:
-
不起作用...
标签: java android android-camera