【问题标题】:How to make Android camera preview less lagy?如何让 Android 相机预览不那么卡顿?
【发布时间】:2013-04-30 22:31:12
【问题描述】:

我想制作一个每 0.1 秒拍照的应用,所以我制作了一个定期执行的AsyncTask。问题是,预览变得非常不稳定,因为它在拍摄每张照片后会停止一段时间。这是我所拥有的:

public class Photo extends AsyncTask<Void, String, Boolean> {

    @Override
    protected Boolean doInBackground(Void... params) {
        try {
            takePhoto();
        } catch (Exception e) {
            onError();
        }
        return true;

    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();


    }

    @Override
    protected void onPostExecute(Boolean result) {
        super.onPostExecute(result);

    }

}


public void takePhoto() {

    PictureCallback mPicture = new PictureCallback() {
        public void onPictureTaken(byte[] data, Camera camera) {
            mCamera.startPreview();
            mPreview.bringToFront();


        }
    };

    mCamera.takePicture(null,null,  mPicture);

}

这个 AsyncTask 可以按预期准确地拍照,但是预览没有用,因为它非常不稳定。我也尝试在ShutterCallback 开始预览,但它只会导致appcrash。

【问题讨论】:

  • 我不确定您是否真的可以对此做任何事情。它很可能与硬件有关。您是否考虑过捕捉视频并巧妙利用各个帧?您需要强制视频去隔行扫描。只是一个想法。

标签: android android-asynctask android-camera


【解决方案1】:

我想做一个应用,每 0.1 秒拍照一次

很少有手机会支持如此频繁的拍照。

预览变得非常不稳定,因为在拍摄每张照片后会停止一段时间

AFAIK,这是不可避免的。

如果速度如此关键,您将需要限制自己使用setPreviewCallbackWithBuffer()Camera.PreviewCallback 处理预览帧。

【讨论】:

  • 好的,我可以减少拍摄频率,甚至可能 1 秒,我肯定会按照您的建议尝试 setPreviewCallbackWithBuffer() 和 Camera.PreviewCallback。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-28
  • 1970-01-01
相关资源
最近更新 更多