android - Nexus 4手机上没有调用onPreviewFrame…而是在模拟器上

标签 android opencv android-camera opticalflow nexus-4

 public boolean openCamera() {
    Log.i(TAG, "openCamera");
    releaseCamera();
    mCamera = Camera.open();
    if (mCamera == null) {
        Log.e(TAG, "Can't open camera!");
        return false;
    }

    mCamera.setPreviewCallbackWithBuffer(new PreviewCallback() {

        public void onPreviewFrame(byte[] data, Camera camera) {
            synchronized (View.this) {
                System.arraycopy(data, 0, mFrame[frameIndex], 0,
                        data.length);
                View.this.notify();
            }
            camera.addCallbackBuffer(mBuffer);
            if (frameIndex == 1) {
                bufferIsSet = true;
            }
            frameIndex ^= 1;

        }
    });
    return true;
}

以上是打开相机的方法。 (可以在https://github.com/sungjkang/OpticalFlow/blob/master/src/com/wais/opticalflow/View.java上找到更多代码)

它可以在使用模拟器的笔记本电脑上正常运行,但在Nexus 4上完全无法运行。
经过一番挖掘之后,我注意到我在使用手机时从未进入过onPreviewFrame,但是该方法正在我的模拟器中调用。

有人知道这是怎么回事吗?

最佳答案

我有同样的问题。主要是尺寸问题,请在下面的代码中为我工作。

Camera.Parameters parameters = camera.getParameters();
    List<Camera.Size> sizes = parameters.getSupportedPreviewSizes();
    Camera.Size cs = sizes.get(0);
    parameters.setPreviewSize(cs.width, cs.height);
    // parameters.setPreviewSize(w, h);
    camera.setParameters(parameters);
    camera.startPreview();

关于android - Nexus 4手机上没有调用onPreviewFrame…而是在模拟器上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19872012/

相关文章:

c++ - 在 Ubuntu : "Invalid or incomplete multibyte or wide character", 和有趣的 UTF-8 字符上执行编译文件

android - 我可以在 WebView 中打开相机吗?

java - Mobile Vision API 读取的条码不正确

php - 解码从android发布的base64图像数据以将图像保存在php服务器上

python - 人脸检测后缩小图像尺寸

Android 应用程序在加载外部库时退出

android - android M 之前的运行时权限(api 14 及更高版本)

java - 图像未保存在我的相机应用程序中

android - 无法使 Android 数据绑定(bind)插件工作

Android 在超过 5 个 Activity 中设置常量 Button