1

Android 6.1、sdk 23 で新しい camera2 API を使用しています。

プレビューと静止画キャプチャの 2 つのリクエストがあります。静止画のリクエストごとにフラッシュが発光するようにしたいのですが、プリフラッシュはありません。現在、私のリクエストは次のようになっています。

CaptureRequest.Builder requester = mCameraDevice.createCaptureRequest(mCameraDevice.TEMPLATE_STILL_CAPTURE);
        requester.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
        requester.set(CaptureRequest.CONTROL_CAPTURE_INTENT, CaptureRequest.CONTROL_CAPTURE_INTENT_STILL_CAPTURE);
        requester.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, CaptureRequest.CONTROL_AE_STATE_FLASH_REQUIRED);
        requester.set(CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER, CaptureRequest.CONTROL_AE_PRECAPTURE_TRIGGER_CANCEL);
        requester.addTarget(mCaptureBuffer.getSurface());

mCaptureSession.capture(requester.build(), null, null);

ある携帯電話 (Motorola Moto G) では動作するようですが、別の携帯電話 (Nexus 5 -- フラッシュがまったくオンになりません) では動作しないようです。他のカメラアプリでトリガーできるので、Nexus のフラッシュが機能することはわかっているので、設定していないデフォルトがいくつかあると思います。

これを行う別の方法/設定できるフラグはありますか?

ありがとう!

編集:


私が抱えていた問題の多くは、LIMITEDcamera2 しかサポートしていないデバイスで作業したことが原因であることがわかりました。カメラ 2 を使用してカメラにアクセスできるからといって、すべての機能を制御できるわけではありません。詳細については、この回答をご覧ください

4

2 に答える 2

0

手動の flashMode 更新はこれで実行できます

ImageCapture.flashMode は、初期構成、ImageCapture.Builder() などでビルドするときにのみ有効であることがわかります。ただし、フラッシュを動的に有効/無効にしたい場合は、次を使用する必要があります。

camera?.cameraControl?.enableTorch(enableFlash)

カメラって何?と思ったら?ドキュメントからキャプチャしました。

// A variable number of use-cases can be passed here -
// camera provides access to CameraControl & CameraInfo
camera = cameraProvider.bindToLifecycle(
this, cameraSelector, preview, imageCapture
)
于 2020-12-31T04:19:26.840 に答える