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.