【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。
(ちなみに、デバイス対応の解像度として
リストで取得できる値ならどれでも設定できます)
カメラってみんな使ってそうなのに、
意外なところで躓いたりしますよね?