gpt4 book ai didi

java - Android 相机禁用 takePicture 上的 stopPreview

转载 作者:行者123 更新时间:2023-11-30 06:29:16 24 4
gpt4 key购买 nike

我正在尝试构建一个应用程序,它使用相机 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) After taking a picture, preview display will have stopped. To take more photos, call startPreview() again first.

有没有办法在拍照时禁用 stopPreview 或此方法执行的任何其他操作?

感谢您的帮助。

最佳答案

也许对您来说 onPreviewFrame() 中提供的分辨率就足够了?那么,在“拍照”之后就不需要重新启动相机了。实时预览不会卡住。

如果您的目标设备的 API >= 21 (Lollipop),则应使用新的 camera2 API 而不是已弃用 Camera API。新的 API 有许多改进,其中 - 它可以帮助平滑的多图像捕获。

即使您仍然使用旧的 API,也可以进行一些改进。

现有代码的问题之一是它在 UI 线程上与相机设备配合使用。相反,use a background HandlerThread打开相机,并确保 onPictureTaken() 重新启动预览并立即返回,将所有处理卸载到另一个工作线程。

关于java - Android 相机禁用 takePicture 上的 stopPreview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46470163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com