Fotoğraf çekildiğinde Android telefondan AutoExposureCompensation (Parlaklık) düzeyini nasıl alabilirim? ?Fotoğraf çekerken Android telefon kamerasından Java ile pozlama telafisi seviyesi nasıl edinilir?
Fotoğraf çekebilirim. Pozlama Telafisi (kontrol ettiğimde her zaman sıfır) dahil olmak üzere, Kameranın Parametrelerine erişebilirim, ancak daha önce değil, daha sonra değil, fotoğraf çekildiği anda AE Telafisi seviyesini almam gerekiyor.
Arka plan: Resimlerin çekildiği aynı AE Telafisi seviyesini kullanmak için belirli bir zamanda çekilen tüm fotoğrafların çekilmesini istiyorum. Bu yüzlerce ayarın, Android kameraların tipik olarak yaptığı poz seviyesine veya beyaz dengesine sahip olmasını istemiyorum. Bir kez olsun, tüm başarılı fotoğrafları ve aynı ayarları yapmak istiyorum.
Resimler, OpenCV, fragmanlar vb. Için "niyet" kullanmayı denedim. Bunlardan herhangi biriyle AE telafisi ayarını alamıyorum.
public class DiscPhoto extends Activity implements CvCameraViewListener2, OnTouchListener {
private static final String TAG = "OCVSample::Activity";
private NewJavaCameraView mOpenCvCameraView;
private List<Size> mResolutionList;
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
mOpenCvCameraView.setOnTouchListener(DiscPhoto.this);
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
public DiscPhoto() {
Log.i(TAG, "Instantiated new " + this.getClass());
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "called onCreate");
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_disc_photo);
mOpenCvCameraView = (NewJavaCameraView) findViewById(R.id.discPhotoPage);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(this);
}
@SuppressLint("SimpleDateFormat")
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.i(TAG,"onTouch event");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
String currentDateandTime = sdf.format(new Date());
String fileName = Environment.getExternalStorageDirectory().getPath() +
"/sample_picture_" + currentDateandTime + ".jpg";
mOpenCvCameraView.takePicture(fileName);
Toast.makeText(this, fileName + " saved", Toast.LENGTH_SHORT).show();
return false;
}
Eğer AE [ShutterCallback] (https://developer.android.com/reference/android/hardware/ almak denediniz bir boşluk fonksiyonu denir createPreviewSessions() diyoruz Camera.ShutterCallback.html) kovuldu? – NAmorim
NAmorim Evet, böyle bir şey denedim. Nereye gittiğimi bulmak için sensör pozlama süresine ve sensör hassasiyetine bakıyorum. İşe yarayıp yaramadığından emin değil. Ama buna baktığın için teşekkürler. – Brian
android.hardware.camera2 API'sını bir Option kullanıyor mu? Belki o zaman burada bir şey bulacaksınız: https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys() – Fildor