見出し画像

【Androidアプリ開発】CameraXで最大解像度にならない問題が解決

開発しているとたまにあるこのパターン。
ホントに参る瞬間がありますよね。。。

CameraX APIを推奨しますなんて言いつつ、
このAPIだと、なぜかデバイスのカメラの最大解像度に設定できない。

なぜ?
どうして?

と、

一年ほど前に悩んで、
しばらく放置していたら、

この度、解決しました。

原因は、
そもそもAPI側が対応できてなかったらしく、

新しいバージョン "1.3.0-alpha06"にして、
(build.grade(app)に指定する時のバージョン)

    def camerax_version = "1.3.0-alpha06"

あとは、
今まで最大解像度にするだけなら
こんな感じでしょ?と思っていた
下のようなコードに、

最大解像度にできそうなのにできないコード

.setResolutionSelector( … 
この部分を追加するだけ、

    // ImageCapture
           imageCapture = new ImageCapture.Builder()
           .setResolutionSelector(
                 new ResolutionSelector.Builder()
                            .setHighResolutionEnabledFlag(HIGH_RESOLUTION_FLAG_ON)
                            .build()
           )
           // 最大品質に設定
           .setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY)
           .build();
実際の画面例

デバイスの最大解像度で撮影する、
ImegeCaptureにする場合はこれでOK。

(ちなみに、デバイス対応の解像度として
リストで取得できる値ならどれでも設定できます)

カメラってみんな使ってそうなのに、
意外なところで躓いたりしますよね?

いいなと思ったら応援しよう!