我们知道,当摄像机预览比率设置为4:3
而不是16:9
时,将在相同距离处获得更大的预览字段,详细信息如下:
Android Camera API - Weird zoom effect
但是当我使用opengl处理android相机预览时遇到了一个问题,这是下面提到的第二种方法。
有两种实现相机预览的方法:
没有opengl的传统方式,只需使用Camera.setPreviewTexture(SurfaceTexture texture)
或Camera.setPreviewDisplay(SurfaceHolder holder)
使用opengl的ContinuousCaptureActivity
方法,我们使用API swapBuffers()
渲染预览图像。
第一种方法是可以的,如果预览比例从16:9更改为4:3,我会发现预览字段变大。
但是,第二种方法在某些android手机中不能正常运行,当预览比例更改时,预览字段保持不变,并且预览字段以4:3的比例小于第一种方法。
我坚持认为这是一个错误,我非常想解决这个问题,谁能给我一些建议?
最佳答案
经过一番努力,我终于找到了确切的原因,这是API Camera.Parameters.setRecordingHint(true)
当我在源代码中删除此子句时,预览字段变得正常。
简而言之,API Camera.Parameters.setRecordingHint(true)
是某些Android设备中的错误。
对于某些设备,如果预览比例设置为4:3(使用API Camera.Parameters.setPreviewSize(int,int)),则调用API setRecordingHint(true)将导致相机预览的字段变小。