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:scaleType
(ImageView
の既存のものと同様)があり、プレビューをプレビューサイズに調整できると便利です。
次のように、TextureView
を使用してMatrix
のアスペクト比を設定できます。
Matrix txform = new Matrix();
textureView.getTransform(txform);
txform.setScale((float) = videoWidth / viewWidth, (float) videoHeight / viewHeight);// aspect ratio
textureView.setTransform(txform); // apply matrix
https://stackoverflow.com/a/49449986/9397052 同様の問題の解決策があります。解決策を決定したら、setTargetAspectRatio
関数を使用しないでください。代わりに、setTargetResolution
のみを使用してください。その後、同じように動作するはずです。