6

Android Camera2 API を使用してアプリの写真を撮っていますが、ほとんどの Samsung Galaxy デバイス (galaxy s6 edge、galaxy s7、galaxy j7) でフラッシュを正しく動作させることができません。Play ストアにあった Google のカメラ アプリも同じ動作を示すため、適切にフラッシュ ロジックを実装したと思います。また、Galaxy s8 はフラッシュでかなりうまく機能するようです (ただし、結果の照明には一貫性がありません)。

Galaxy j7 の問題は、フラッシュを使用して写真を撮ると (フラッシュがロックされているか、フラッシュが必要なシーンで自動フラッシュを使用して)、フラッシュが長時間オンのままになり、プレビューがロックされ、その後にロックされることです。画像にはおそらく7秒かかり、フラッシュは画像の一部ではありません.

フラッシュモードを処理する次のメソッドがあります。

private void setAutoFlash(CaptureRequest.Builder requestBuilder)
{
    switch (mFlashState)
    {
        case FLASH_STATE_AUTO:
            requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
            //requestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
            break;
        case FLASH_STATE_ON:
            requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
            //requestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_SINGLE);
            break;
        case FLASH_STATE_OFF:
            requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
            //requestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
            break;
    }
}

このフラッシュ ロジックは、CaptureRequest.Builder が必要になるたびに呼び出されます。

コメントアウトされた 3 行は、私が読んだ他のもので、フラッシュが適切に動作するように提案されていましたが、何もしていないようです

Samsung には独自のカメラ API ( http://developer.samsung.com/galaxy/camera ) がありますが、これは Camera2 の単なるラッパーであり、彼らの API で問題が解決されないのではないかと心配しています。

追加情報:

  • 私はプレイストアからいくつかのカメラアプリを試しましたが、うまくいくものとそうでないものがあります。
  • ZCamera はフラッシュで正常に動作するため、Samsung のカメラ API を使用して動作させていると思われましたが、ZCamera のタッチ メータリングが Samsung デバイスでは動作しないことに気付きました。これは、Camera2 実装のデバッグ中に遭遇した別の問題です。
  • 非推奨の Camera API を使用していれば、Flash は問題なく動作するようです

作業フラッシュを達成する方法についてのヘルプは大歓迎です

4

3 に答える 3

0

私のアプリケーションは 5 秒ごとに写真を撮ります。(1) カメラを選択し、(2) セッションを取得し、各ループで (3) Flash モードを設定してセッションでキャプチャ メソッドを呼び出すキャプチャ リクエストを作成します。

Samsung SM-G550T (Android バージョン 6.01) には問題はありませんが、Moto G4 (Android バージョン 7.0) のフラッシュ モードに問題がありました。両方の電話をフラッシュにしましたが、この設定のみでした:

CaptureRequest.Builder requestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
requestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_SINGLE);

現在、LG デバイス (M210N) (Android バージョン 7.0) で問題が発生しています。上記の設定を使用すると、デバイスが一度だけ点滅します。(上記のように)カメラを完全に再初期化すると、デバイスは一度だけ再び点滅します。

上記の requestBuilder に設定を追加するCONTROL_AE_MODE_ON_ALWAYS_FLASHと、LG はまったく点滅しません。そのため、そのフラグを削除する必要がありました。

さまざまな追加設定と設定の組み合わせを試しましたが、いずれもこの問題を解決できませんでした。この問題の影響を受けるデバイスはいくつあるのでしょうか。

于 2017-10-12T15:57:51.887 に答える