Camera2 API で写真撮影機能を開発しております。
現在、おおよその端末で問題なく動作しているのですが、Galaxy S7 のバックカメラでフラッシュ撮影を行うと、フラッシュは光るが暗い画像が撮れてしまうという状態になっています。
どうやら、フラッシュが光る前に撮像が完了して後続処理が行われているようだ、という所までは確認できました。
なぜ Galaxy S7 だけこのような現象が起きるのか、あるいは対策等ご存知なら、ご教授お願い致します。
参考までに、撮影処理を以下に記載します。
3Aは、
CONTROL_AF_MODE_CONTINUOUS_PICTURE
CONTROL_AE_MODE_ON_AUTO_FLASH
CONTROL_AWB_MODE_AUTO
を設定しています。
Java
1 private void takePicture() throws CameraAccessException { 2 Log.d(TAG, "takePicture() start."); 3 4 // シャッター音を鳴らす処理 5 final MediaActionSound shutterSound = new MediaActionSound(); 6 shutterSound.play(MediaActionSound.SHUTTER_CLICK); 7 8 // プログレスバーを表示 9 final Dialog progressDialog = new Dialog(mActivity, R.style.Theme_CustomProgressDialog); 10 progressDialog.setContentView(R.layout.custom_progress_dialog); 11 progressDialog.setCanceledOnTouchOutside(false); 12 progressDialog.show(); 13 14 final CaptureRequest.Builder captureBuilder = 15 mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); 16 captureBuilder.addTarget(mImageReader.getSurface()); 17 18 // プレビューと同じCameraRequestパラメータを設定する 19 Log.d(TAG, "set same parameters as preview."); 20 configurePreviewRequestBuilder(captureBuilder); 21 Log.d(TAG, "set take AF: " + captureBuilder.get(CaptureRequest.CONTROL_AF_MODE)); 22 Log.d(TAG, "set take AE: " + captureBuilder.get(CaptureRequest.CONTROL_AE_MODE)); 23 Log.d(TAG, "set take AWB: " + captureBuilder.get(CaptureRequest.CONTROL_AWB_MODE)); 24 25 // 画像回転の計算と適用 26 int rotation = mActivity.getWindowManager().getDefaultDisplay().getRotation(); 27 captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, getOrientation(rotation)); 28 29 // ↓縦持ち固定なのでmSensorOrientation = 90° 30 Log.d(TAG, "takePicture() mSensorOrientation: " + mSensorOrientation); 31 32 // ImageReaderが準備完了したらコールバック処理で撮影する 33 mImageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() { 34 @Override 35 public void onImageAvailable(ImageReader reader) { 36 createResponseBitmap(reader); 37 shutterSound.release(); 38 progressDialog.dismiss(); 39 } 40 }, mHandler); 41 42 mCaptureSession.stopRepeating(); 43 mCaptureSession.capture(captureBuilder.build(), null, null); 44 }
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/04/05 01:10
2017/04/05 01:15