解决方案 »

  1.   

    camera.setPreviewCallback(new Camera.PreviewCallback() {
                @Override
                public void onPreviewFrame(byte[] data, Camera camera) {
                 
                }
            });//代码应该是没有问题的。
      

  2.   

    我看了一下源码个人理解是 当有新的Frame产生 才会重新回调 onPreviewFrame,我调用OpenGL es,surfaceview也是这个样子的,可能是后面的数据没有变化。 其他的我也不是很清楚咯。
      

  3.   

    因为你用的是surfaceTexture,surfaceTexture里面的数据要消耗了,才能填充新的数据进去,这样你才能抓到preview数据,你要在surfacetexture收到新的frame之后,调用surfacetexture.updateTexImage()去消耗buffer才行。
    或者你直接换用surfaceview,这样就不用自己处理了。
      

  4.   

    又碰到一个问题了,onpreviewframe 里面的Camera 获取的getPreviewSize()不会根据我设置 parameters.setPreviewSize(720, 1280),而改变。我又晕了,而且图像还是个倒的。。也不会随我设置camera.setDisplayOrientation(90)。这又是怎么了???
      

  5.   

    又碰到一个问题了,onpreviewframe 里面的Camera 获取的getPreviewSize()不会根据我设置 parameters.setPreviewSize(720, 1280),而改变。我又晕了,而且图像还是个倒的。。也不会随我设置camera.setDisplayOrientation(90)。这又是怎么了???
    previewsize不是随便设置的,要是camera支持的才行,camera.getPreviewSize()确认下。
    setDisplayOrientation()这个函数,你要看下document要怎么用,不要直接写90。
    你这两个问题混在一起不好,一个个去试吧。