web-dev-qa-db-ja.com

CameraXを使用して正しいアスペクト比を設定する方法

CameraX codelab をフォローしていますが、setTargetAspectRatioおよびsetTargetResolutionメソッドを使用しても、プレビューで間違ったアスペクト比が表示されます。

private fun startCamera() {
    // Create configuration object for the viewfinder use case
    val previewConfig = PreviewConfig.Builder().apply {
        setTargetAspectRatio(Rational(1, 1))
        setTargetResolution(Size(640, 640))
    }.build()
    ...

そして、レイアウトは、コードラボで提示されているようにハードコードされたサイズを使用しています。

<TextureView
    Android:id="@+id/view_Finder"
    Android:layout_width="640px"
    Android:layout_height="640px"
    ...

ライブラリにCameraTextureViewとプロパティAndroid:scaleTypeImageViewの既存のものと同様)があり、プレビューをプレビューサイズに調整できると便利です。

CameraX wrong aspect ratio

7
nglauber

次のように、TextureViewを使用してMatrixのアスペクト比を設定できます。

Matrix txform = new Matrix();
textureView.getTransform(txform);
txform.setScale((float) = videoWidth / viewWidth, (float) videoHeight / viewHeight);// aspect ratio
textureView.setTransform(txform); // apply matrix
0
jackz314

https://stackoverflow.com/a/49449986/9397052 同様の問題の解決策があります。解決策を決定したら、setTargetAspectRatio関数を使用しないでください。代わりに、setTargetResolutionのみを使用してください。その後、同じように動作するはずです。

0
Yavuz Bahçeci