web-dev-qa-db-ja.com

takePictureはCameraX(1.0.0-alpha06)でexecutorを必要とします

からの更新後

androidx.camera:camera-core:1.0.0-alpha03

androidx.camera:camera-core:1.0.0-alpha06

メソッドsetTargetAspectRatio(ImageCaptureConfig.Builder内)およびtakePicture(ImageCapture内)のシグネチャが変更されました。

Webの公式ドキュメントと情報には、新しいメソッドの使用方法(エグゼキューターの指定方法)は示されていません。

更新後に壊れたコード:

...
val captureConfig = ImageCaptureConfig.Builder()
    .setTargetAspectRatioCustom(Rational(1, 1)) //this method changed
    .setFlashMode(flashMode)
    .setLensFacing(lensFacing)
    .build()

val capture = ImageCapture(captureConfig)

binding.takeAPhoto.setOnClickListener {
    ...
    val imageFile = createTempFile(System.currentTimeMillis().toString(), ".jpg")
    capture.takePicture(imageFile, object : ImageCapture.OnImageSavedListener { //this method also changed

        override fun onImageSaved(file: File) {
            ...
        }

        override fun onError(useCaseError: ImageCapture.UseCaseError, message: String, cause: Throwable?) {
            ...
        })
    }
}

誰もが新しい方法を使用する方法の例を持っていますか(または見つける場所を知っていますか)?前もって感謝します

6

以下のようにコマンドを実行するだけです。

@Override
public void execute(Runnable command) {
    command.run(); // <-- THIS IS NEEDED
}
0
A Syed Fahad

Alpha06の変更の変更ログは次のとおりです。 https://developer.Android.com/jetpack/androidx/releases/camera

  • setTargetAspectRatio()メソッドは、_4_3_または_16_9_値を持つAspectRatio enumを取るようになりました。
  • takePicture()メソッドは_(file, metadata, executor, imageSavedListener)_ //ケース/ニーズに応じてエグゼキュータを使用できます。例はval executor = Executors.newSingleThreadExecutor()です
  • _useCase.onPreviewOutputUpdateListener =_の代わりにuseCase.setOnPreviewOutputUpdateListener()を使用

参考:CameraXは2019年12月にベータ版になります

0
Himanshu Walia