diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/com/android/camera/CaptureModule.java | 42 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsActivity.java | 4 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 8 |
3 files changed, 53 insertions, 1 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 87b03d141..62e5bfa13 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -265,6 +265,8 @@ public class CaptureModule implements CameraModule, PhotoController, "org.codeaurora.qcamera3.sharpness.strength", Integer.class); public static final CaptureRequest.Key<Integer> exposure_metering = new CaptureRequest.Key<>( "org.codeaurora.qcamera3.exposure_metering.exposure_metering_mode", Integer.class); + public static final CaptureRequest.Key<Byte> eis_mode = + new CaptureRequest.Key<>("org.quic.camera.eis3enable.EISV3Enable", byte.class); private boolean[] mTakingPicture = new boolean[MAX_NUM_CAM]; private int mControlAFMode = CameraMetadata.CONTROL_AF_MODE_CONTINUOUS_PICTURE; @@ -398,6 +400,7 @@ public class CaptureModule implements CameraModule, PhotoController, private boolean mHighSpeedCapture = false; private boolean mHighSpeedRecordingMode = false; //HFR private int mHighSpeedCaptureRate; + private boolean mEisEnabled = false; private CaptureRequest.Builder mVideoRequestBuilder; private static final int STATS_DATA = 768; @@ -3434,6 +3437,7 @@ public class CaptureModule implements CameraModule, PhotoController, applyFaceDetection(builder); applyZoom(builder, cameraId); applyVideoEncoderProfile(builder); + applyEIS(builder); } private void updateVideoFlash() { @@ -3559,6 +3563,15 @@ public class CaptureModule implements CameraModule, PhotoController, mMediaRecorderPausing = true; mRecordingTotalTime += SystemClock.uptimeMillis() - mRecordingStartTime; mMediaRecorder.pause(); + if (mEisEnabled) { + try { + if (mCurrentSession != null) { + mCurrentSession.abortCaptures(); + } + } catch (CameraAccessException e) { + Log.w(TAG, "pauseVideoRecording " + " Camera access failed"); + } + } } private void resumeVideoRecording() { @@ -3593,6 +3606,13 @@ public class CaptureModule implements CameraModule, PhotoController, boolean shouldAddToMediaStoreNow = false; // Stop recording checkAndPlayRecordSound(cameraId, false); + if (mEisEnabled) { + try { + mCaptureSession[cameraId].abortCaptures(); + } catch (CameraAccessException e) { + Log.w(TAG, "stopRecordingVideo " + cameraId + " Camera access failed"); + } + } mFrameProcessor.setVideoOutputSurface(null); mFrameProcessor.onClose(); closePreviewSession(); @@ -4145,7 +4165,11 @@ public class CaptureModule implements CameraModule, PhotoController, String value = mSettingsManager.getValue(SettingsManager.KEY_SHARPNESS_CONTROL_MODE); if (value != null) { int intValue = Integer.parseInt(value); - request.set(CaptureModule.sharpness_control, intValue); + try { + request.set(CaptureModule.sharpness_control, intValue); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } } } @@ -4161,6 +4185,22 @@ public class CaptureModule implements CameraModule, PhotoController, } } + private void applyEIS(CaptureRequest.Builder request) { + if (!mSettingsManager.isDeveloperEnabled()) { + return;//don't apply if not in dev mode + } + String value = mSettingsManager.getValue(SettingsManager.KEY_EIS_VALUE); + if (value != null) { + mEisEnabled = Boolean.parseBoolean(value); + byte byteValue = (byte) (mEisEnabled ? 0x01 : 0x00); + try { + request.set(CaptureModule.eis_mode, byteValue); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } + } + } + private void applyExposureMeteringModes(CaptureRequest.Builder request) { String value = mSettingsManager.getValue(SettingsManager.KEY_EXPOSURE_METERING_MODE); if (value != null) { diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java index 6531cc81d..52cd04ac3 100755 --- a/src/com/android/camera/SettingsActivity.java +++ b/src/com/android/camera/SettingsActivity.java @@ -320,6 +320,10 @@ public class SettingsActivity extends PreferenceActivity { if (privateCounter >= DEVELOPER_MENU_TOUCH_COUNT) { mDeveloperMenuEnabled = true; mSharedPreferences.edit().putBoolean(SettingsManager.KEY_DEVELOPER_MENU, true).apply(); + SharedPreferences sp = SettingsActivity.this.getSharedPreferences( + ComboPreferences.getGlobalSharedPreferencesName(SettingsActivity.this), + Context.MODE_PRIVATE); + sp.edit().putBoolean(SettingsManager.KEY_DEVELOPER_MENU, true).apply(); Toast.makeText(SettingsActivity.this, "Camera developer option is enabled now", Toast.LENGTH_SHORT).show(); recreate(); } diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index e6f96e0e3..0e42dfbfc 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -155,6 +155,7 @@ public class SettingsManager implements ListMenu.SettingsListener { public static final String KEY_MANUAL_ISO_VALUE = "pref_camera2_manual_iso_key"; public static final String KEY_MANUAL_EXPOSURE_VALUE = "pref_camera2_manual_exposure_key"; public static final String KEY_QCFA = "pref_camera2_qcfa_key"; + public static final String KEY_EIS_VALUE = "pref_camera2_eis_key"; public static final HashMap<String, Integer> KEY_ISO_INDEX = new HashMap<String, Integer>(); public static final String KEY_BSGC_DETECTION = "pref_camera2_bsgc_key"; @@ -1746,4 +1747,11 @@ public class SettingsManager implements ListMenu.SettingsListener { editor.commit(); } + public boolean isDeveloperEnabled() { + SharedPreferences sp = mContext.getSharedPreferences( + ComboPreferences.getGlobalSharedPreferencesName(mContext), + Context.MODE_PRIVATE); + return sp.getBoolean(SettingsManager.KEY_DEVELOPER_MENU, false); + } + } |