以下の内容はhttps://android-java.hatenablog.jp/entry/camerax-zoom-kotlinより取得しました。


【Android開発】CameraX にズーム機能を追加する方法 - Kotlin

今回は CameraX にズーム機能を追加する方法を解説します。これから CameraX でカメラアプリを作る方は、ぜひ、参考にして時間を節約してください。

※なお、CameraX によるカメラアプリの作り方の基本形は、以下の2つの記事を参考としていただければと思います。

android-java.hatenablog.jp

android-java.hatenablog.jp

~ ポイント解説 ~

CameraX でズーム機能を使用する方法は2つあります。

ひとつは、取得した CameraControl に「setLinearZoom」「0.0f~1.0f」のフロート値をセットする方法で、もうひとつは、同じく、取得した CameraControl に「setZoomRatio」で任意のズーム値をセットする方法ですが、後者は機種ごとにセットするズーム値が異なり、その値の取得に少し手間がかかるので今回は「setLinearZoom」を使用します。

(例)

setLinearZoom( 0.5f ) ※ズーム率50%を指定
setLinearZoom( 1.0f ) ※ズーム率100%を指定

~ 手順 ~

① CameraControl を宣言します。

private lateinit var cameraControl: CameraControl

② Camera から CameraControl を取得します。Camera(camera) は プレビューを開始する fun { } の中ので取得することができます。

camera = cameraProvider.bindToLifecycle(
          this,
          cameraSelector,
          preview,
          imageCapture,
          videoCapture
)
//CameraControl 取得
cameraControl = camera.CameraControl

③ CameraControl(cameraControl)にズーム率(0.0f~1.0f)をセットするとズームします。

cameraControl.setLinearZoom(0.3f)  //この例はズーム率30%

以下のようにすると任意のボタンでズーム率を変更することができます。

なお、ボタンを押し続けるとズーム率が 0.0f~1.0f 以外となりますが、ズーム率が範囲を超えた場合(-2.0や13.0などなった場合)は無視されるだけで、アプリが強制終了することはありません。

var zoom: Float = 0.0f

//10% ズームイン
viewBinding
.zoomInButton.setOnClickListener {
   zoom += 0.1f
cameraControl.setLinearZoom(zoom)
}

//10% ズームアウト
viewBinding.zoomInButton.setOnClickListener {
   zoom -= 0.1f
cameraControl.setLinearZoom(zoom)
}

備考・まとめ

カメラアプリをより使いやすくするために、ズーム率はボタン以外にも、スライダーやピンチ(イン・アウト)動作で変更できるようにすると良いでしょう。

※スライダーとピンチ動作でズーム率を変更する方法は、後日ご紹介する予定です。

END




以上の内容はhttps://android-java.hatenablog.jp/entry/camerax-zoom-kotlinより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14