in HdrViewfinder/Application/src/main/java/com/example/android/hdrviewfinder/HdrViewfinderActivity.java [543:591]
public void onCaptureCompleted(@NonNull CameraCaptureSession session,
@NonNull CaptureRequest request,
@NonNull TotalCaptureResult result) {
// Only update UI every so many frames
// Use an odd number here to ensure both even and odd exposures get an occasional update
long frameNumber = result.getFrameNumber();
if (frameNumber % 3 != 0) return;
final Long exposureTime = result.get(CaptureResult.SENSOR_EXPOSURE_TIME);
if (exposureTime == null) {
throw new RuntimeException("Cannot get exposure time.");
}
// Format exposure time nicely
String exposureText;
if (exposureTime > ONE_SECOND) {
exposureText = String.format(Locale.US, "%.2f s", exposureTime / 1e9);
} else if (exposureTime > MILLI_SECOND) {
exposureText = String.format(Locale.US, "%.2f ms", exposureTime / 1e6);
} else if (exposureTime > MICRO_SECOND) {
exposureText = String.format(Locale.US, "%.2f us", exposureTime / 1e3);
} else {
exposureText = String.format(Locale.US, "%d ns", exposureTime);
}
Object tag = request.getTag();
Log.i(TAG, "Exposure: " + exposureText);
if (tag == mEvenExposureTag) {
mEvenExposureText.setText(exposureText);
mEvenExposureText.setEnabled(true);
mOddExposureText.setEnabled(true);
mAutoExposureText.setEnabled(false);
} else if (tag == mOddExposureTag) {
mOddExposureText.setText(exposureText);
mEvenExposureText.setEnabled(true);
mOddExposureText.setEnabled(true);
mAutoExposureText.setEnabled(false);
} else {
mAutoExposureText.setText(exposureText);
mEvenExposureText.setEnabled(false);
mOddExposureText.setEnabled(false);
mAutoExposureText.setEnabled(true);
}
}