10

からのアップデート後

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?) {
            ...
        })
    }
}

新しいメソッドを使用する方法の例を誰かが持っていますか (またはどこで見つけられるか知っていますか)? 前もって感謝します

4

7 に答える 7

-2

CameraX は組み込みのエグゼキュータを提供し、以下のように写真を撮ることができます:

imgCaptureButton.setOnClickListener(new View.OnClickListener() {
    @Override
    @SuppressLint("RestrictedApi")
    public void onClick(View v) {
        imgCap.takePicture(CameraXExecutors.mainThreadExecutor(),new ImageCapture.OnImageCapturedListener() {
            @Override
            public void onCaptureSuccess(ImageProxy image, int rotationDegrees) {
                super.onCaptureSuccess(image, rotationDegrees);

                // Play with the Image here.
            }
        });
    }
});

File を使用して画像を保存するのではなく、画像をバッファーとしてメモリに保存します。

于 2019-10-20T09:48:09.030 に答える