重新启动 Android 相机后 GLSurfaceView 显示异常,有许多小单元格

GLSurfaceView display abnormal with many small cells after relaunching the Android Camera

使用GLSurfaceView显示相机预览数据,如果我进行以下操作,会出现预览异常(如下截图):

  1. 启动应用并打开相机
  2. 按HOME键
  3. 重新启动应用程序并打开相机

最后,我找到了如下解决方案:

在实现 GLSurfaceView.RendererCameraGLRender 中,在 onSurfaceChanged

中做一些事情
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
    gl.glMatrixMode(GL10.GL_PROJECTION);
    gl.glLoadIdentity();
    gl.glOrthof(0, width, 0, height, -10f, 10f);
    gl.glViewport(0, 0, width, height);
    // ...
}

它工作正常。