У меня есть TextureView с фиксированной шириной и высотой, и я хочу показать предварительный просмотр камеры внутри него. Мне нужно обрезать предварительный просмотр камеры, чтобы он не выглядел растянутым внутри моего TextureView. Как сделать обрезку? Если мне нужно использовать OpenGL, как связать текстуру поверхности с OpenGL и как сделать обрезку с помощью 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 a new Camera preview frame
}
}
Кроме того, после предварительного просмотра, мне нужно иметь возможность считывать в реальном времени пиксели, найденные в центре обрезанного изображения.