Pré-visualização de câmera de corte para TextureView

Eu tenho um TextureView com largura e altura fixas e quero mostrar uma prévia da câmera dentro dele. Eu preciso cortar a visualização da câmera para que ela não pareça esticada dentro do meu TextureView. Como fazer o corte? Se eu precisar usar o OpenGL, como vincular a textura da superfície ao OpenGL e como fazer o corte com o OpenGL?

public class MyActivity extends Activity implements TextureView.SurfaceTextureListener 
{

   private Camera mCamera;
   private TextureView mTextureView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_options);

    mTextureView = (TextureView) findViewById(R.id.camera_preview);
    mTextureView.setSurfaceTextureListener(this);
}

@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
    mCamera = Camera.open();

    try 
    {
        mCamera.setPreviewTexture(surface);
        mCamera.startPreview();
    } catch (IOException ioe) {
        // Something bad happened
    }
}

@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
    mCamera.stopPreview();
    mCamera.release();
    return true;
}

@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
}

@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface)
 {
    // Invoked every time there's a new Camera preview frame
 }
}

Além disso, depois de fazer a pré-visualização corretamente, eu preciso ser capaz de ler em tempo real os pixels encontrados no centro da imagem cortada.

questionAnswers(7)

yourAnswerToTheQuestion