Zoom Camera2 Vorschau mit TextureView
Ich habe ein Problem mit meinem Vorschau-Zoom für die Camera2-API. Ich verwende eine TextureView.
Ich möchte nur den Vorschau-Stream zoomen, der in der TextureView angezeigt wurde.
Ich möchte den Bereich vergrößern, in dem ich die Zoom-Geste verwende.
Ich benutze den SimpleOnScaleGestureListener!
Ich habe folgenden Code hinzugefügt. Der zoomingFactor und die x- und y-Position sind richtig.
private void updateTextureViewSize(float xPosi,float yPosi, float scale){
float scaleX = 1.0f;
float scaleY = 1.0f;
float mVideoWidth = mCamcontrol.getmPreviewSize().getWidth();
float mVideoHeight = mCamcontrol.getmPreviewSize().getHeight();
int rotation = getWindowManager().getDefaultDisplay().getRotation();
RectF viewRect = new RectF(0, 0, 1440, 2560);
RectF bufferRect = new RectF(0, 0, mVideoHeight, mVideoWidth);
bufferRect.offset(xPosi - bufferRect.centerX(), yPosi - bufferRect.centerY());
//16:9 faktor
scaleX = ((mScale * scale) / 9f) * 16f;
scaleY = ((mScale * scale) / 16f) * 9f;
Matrix matrix = new Matrix();
matrix.setRectToRect(bufferRect, viewRect, Matrix.ScaleToFit.FILL);
scalefactorView.setText(String.valueOf(xPosi) + " " + String.valueOf(yPosi));
matrix.setScale(scaleY, scaleX, xPosi, yPosi);
matrix.postRotate(90 * (rotation - 2), xPosi, yPosi);
mTextureView.setTransform(matrix);
}
Zooming ist richtig, aber nicht die Position, an der ich zoome. Beispielsweise! Wenn ich auf die Position rechts / mittel zoome, sehe ich nur das linke / obere Rechteck des Streams.
Ich habe das @ hinzugefüfolgende Bilder um das Problem zu verstehen.