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 は問題なく動作するようです
作業フラッシュを達成する方法についてのヘルプは大歓迎です