2017-06-13 12 views
4

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

ギャラクシー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つのコメントアウト行は、私はそれが示唆された読み何か他のものです必要になるたびに呼ばれています私のために適切にフラッシュ作業を支援するために、

サムスンは独自のカメラAPI(http://developer.samsung.com/galaxy/camera) を持っていますが、私はそれがカメラ2とIオーバー単なるラッパーであることを読んで何かをするように見えるdoesntの彼らのAPIが私の問題を修正することさえないことを心配しています。

追加情報:

  • 私は、Playストアからいくつかの作業をいくつかのカメラのアプリを試してみましたが、他はいけません。
  • ZCameraはFlashとうまく動作しています.SamsungカメラAPIを使用して動作させると思っていましたが、ZCameraのタッチメーターがSamsungデバイスで動作しないことに気付きました。
  • フラッシュは、私は非推奨カメラのAPI

大幅ビットのためのオンとオフ本で働いた後

答えて

1

をいただければ幸い作業フラッシュを実現する方法上の任意の助けに固執する場合は正常に動作するようですIいくつかを実現しました。私はプレイストアのZCameraがフラッシュで動作すると言いましたが、サムスンSDKを使用してこれを達成したと思いました。私はアプリをチェックし、それはサムスンのSDKを使用しません。

また、私のアプリにSamsung SDKを組み込んでいて、何も変わっていません。サムスンのSDKは実際にはGoogleのカメラ2の周りのラッパーですので、サムスンの特定の機能を追加して、それをあなたのプロジェクトに追加してサムスンの互換性を修正することはできません。

私が最後に気づいたのは、自分がプログラムしたタッチメーターの流れ(フォーカスを合わせる/写真を撮る)が、タッチを使わずに写真を撮るときの私のロジックとは大きく異なっていたということでした。通常の写真ロジックは、googles camera2 apiのサンプルコードから借用されていて、正しく動作しませんでした。

サムスンのデバイス(または少なくとも私のために働いたもの)でフラッシュを発するトリックは、最初にAEレベルのチェックをトリガーし、一旦収束すると自動フォーカストリガーを開始することでした。フラッシュは、このオンされた場合はAEレベルを確認し、集中する、その後、実際にカメラ2のAPIを使用して写真

0

を取るためにもう一度フラッシュを発光フラッシュを発光しますAndroidデバイスに非常に特別です。いくつかのメソッドは実装されていないかもしれません。たとえば、thisおよびthisです。 他のものについては、他のプロパティによって適切なフラッシュモードを設定する必要があります。 このコードはcamera2APIをサポートするほとんどのサムスンのデバイスに私の作品:

if (mIsFlashSupported) { 
     switch (mFlashMode) { 
      case FLASH_MODE_ON: 
       requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON); 
       requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_SINGLE); 
       requestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_FLUORESCENT); 
       break; 

      case FLASH_MODE_OFF: 
       requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON); 
       requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF); 
       requestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_DAYLIGHT); 
       break; 

      case FLASH_MODE_AUTO: 
      default: 
       requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH); 
       requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_SINGLE); 
       requestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_DAYLIGHT); 
       break; 
     } 
    } 
0

私のアプリケーションは、5秒ごとに写真を撮影します。私は(1)カメラを選択し、(2)セッションを取得し、次に各ループI(3)で、フラッシュモードを設定し、セッションでキャプチャ方法を呼び出すキャプチャ要求を作成します。

私は私のサムスンSM-G550T(Androidのバージョン6.01)では問題がないが、私は私のモトG4(Androidのバージョン7.0)に、Flashモードでいくつかの問題を抱えていました。私はだけ、この設定では、フラッシュの両方の電話を得た:

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は全く点滅しません。だから私はその旗を取り除かなければならなかった。

私は設定のために、さまざまな追加設定と組み合わせを試してみましたし、それらのどれもが、この問題を排除していません。この問題の影響を受けるデバイスの数は不思議です。

関連する問題