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.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage