Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未调用onPreviewFrame_Java_Android_Camera - Fatal编程技术网

Java 未调用onPreviewFrame

Java 未调用onPreviewFrame,java,android,camera,Java,Android,Camera,我有以下方法打开面向用户的摄像头: CameraOperations.java private Parameters parameters = null; private Camera cam = null; private Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); private static int camNumber = Camera.getNumberOfCameras();

我有以下方法打开面向用户的摄像头:

    CameraOperations.java

    private Parameters parameters = null;
    private Camera cam = null;
    private Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
    private static int camNumber = Camera.getNumberOfCameras();

    public Camera toggleFaceCamera(){

        if(cam == null){
            for(int counter = 0; counter < camNumber; counter++){
                Camera.getCameraInfo(counter, cameraInfo);
                if(cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT){
                    try{
                        cam = Camera.open(counter);
                        parameters = cam.getParameters();
                        parameters.setPreviewFormat(16);
                        return cam;
                    }catch(RuntimeException e){return null;}
                }
            }
        }else{cam.release();}

        return null;

    }

    public void onPreviewFrame(byte[] data, Camera cam){
            Debug.out("teste");
        }
所有这些工作正常,相机显示正确

很遗憾,未调用onPreviewFrame。我已经尝试过使用setPreviewCallback和setPreviewCallbackWithBuffer做一些事情,但老实说,我不明白为什么这不起作用,因为onPreviewFrame应该在显示帧时调用。。。我已经阅读了文档,但我觉得这有点误入歧途,如果有人能让我清楚地理解它,我将不胜感激!(我试过的例子)

(…)
试一试{
cam=摄像机。打开(计数器);
参数=cam.getParameters();
参数。setPreviewFormat(16);

setPreviewCallback(onPreviewFrame);要使用的调用命令的语法

cam.setPreviewCallback(this);
摄像机操作类内部

要进行预览回调,必须调用

cam.startPreview();
如果希望使用参数(例如更改预览格式后),则需要

cam.setParameters(parameters);

通常,您希望在开始查看()之前设置参数。我通过以下方法解决问题:

将.setPreviewCallback移到.startPreview后面

        mCamera.setPreviewDisplay(holder);
        mCamera.startPreview();
        mCamera.setPreviewCallback(previewCallback);

我在mainactivity.java中调用了
cam.startPreview();
,它工作了,帧显示正确…当我调用
cam.setPreviewCallback(this);
inside togglefacecamera时,类型Camera中的方法setPreviewCallback(Camera.PreviewCallback)不适用于参数(CameraOperations)
。如果我调用
setPreviewCallback(onPreviewFrame)
,我会得到“onPreviewFrame无法解析为变量”。您能告诉我应该在哪里调用它以及如何调用它吗?
cam.setParameters(parameters);
        mCamera.setPreviewDisplay(holder);
        mCamera.startPreview();
        mCamera.setPreviewCallback(previewCallback);