summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xres/values/camera2arrays.xml11
-rwxr-xr-xres/values/qcomstrings.xml7
-rwxr-xr-xres/xml/capture_preferences.xml7
-rwxr-xr-xres/xml/setting_menu_preferences.xml9
-rwxr-xr-xsrc/com/android/camera/CaptureModule.java62
-rwxr-xr-xsrc/com/android/camera/SettingsManager.java1
-rwxr-xr-xsrc/com/android/camera/util/PersistUtil.java6
7 files changed, 101 insertions, 2 deletions
diff --git a/res/values/camera2arrays.xml b/res/values/camera2arrays.xml
index f34d2f81e..eecfbf2ec 100755
--- a/res/values/camera2arrays.xml
+++ b/res/values/camera2arrays.xml
@@ -1228,4 +1228,15 @@ for time lapse recording -->
<item>@string/pref_camera2_fs2_entry_value_disable</item>
<item>@string/pref_camera2_fs2_entry_value_enable</item>
</string-array>
+
+ <string-array name="pref_camera2_abort_captures_entries" translatable="false">
+ <item>@string/pref_camera2_abort_captures_entry_disable</item>
+ <item>@string/pref_camera2_abort_captures_entry_enable</item>
+ </string-array>
+
+ <string-array name="pref_camera2_abort_captures_entryvalues" translatable="false">
+ <item>@string/pref_camera2_abort_captures_entry_value_disable</item>
+ <item>@string/pref_camera2_abort_captures_entry_value_enable</item>
+ </string-array>
+
</resources>
diff --git a/res/values/qcomstrings.xml b/res/values/qcomstrings.xml
index 50f70f0ea..e0dd8b3d1 100755
--- a/res/values/qcomstrings.xml
+++ b/res/values/qcomstrings.xml
@@ -1298,5 +1298,12 @@
<string name="pref_camera2_fs2_entry_value_enable" translatable="false">1</string>
<string name="pref_camera2_fs2_entry_value_disable" translatable="false">0</string>
+ <string name="pref_camera2_abort_captures_title" translatable="true">Abort Captures</string>
+ <string name="pref_camera2_abort_captures_default" translatable="false">1</string>
+ <string name="pref_camera2_abort_captures_entry_enable" translatable="true">enable</string>
+ <string name="pref_camera2_abort_captures_entry_disable" translatable="true">disable</string>
+ <string name="pref_camera2_abort_captures_entry_value_enable" translatable="false">1</string>
+ <string name="pref_camera2_abort_captures_entry_value_disable" translatable="false">0</string>
+
</resources>
diff --git a/res/xml/capture_preferences.xml b/res/xml/capture_preferences.xml
index cb5b73e2d..51002729e 100755
--- a/res/xml/capture_preferences.xml
+++ b/res/xml/capture_preferences.xml
@@ -469,4 +469,11 @@
camera:entries="@array/pref_camera2_fs2_entries"
camera:entryValues="@array/pref_camera2_fs2_entryvalues" />
+ <ListPreference
+ camera:key="pref_camera2_abort_captures_key"
+ camera:defaultValue="@string/pref_camera2_abort_captures_default"
+ camera:title="@string/pref_camera2_abort_captures_title"
+ camera:entries="@array/pref_camera2_abort_captures_entries"
+ camera:entryValues="@array/pref_camera2_abort_captures_entryvalues" />
+
</PreferenceGroup>
diff --git a/res/xml/setting_menu_preferences.xml b/res/xml/setting_menu_preferences.xml
index 7bdbca9f0..da0a21154 100755
--- a/res/xml/setting_menu_preferences.xml
+++ b/res/xml/setting_menu_preferences.xml
@@ -492,5 +492,14 @@
android:layout="@layout/preference"
android:summary="%s"/>
+ <ListPreference
+ android:key="pref_camera2_abort_captures_key"
+ android:defaultValue="@string/pref_camera2_abort_captures_default"
+ android:title="@string/pref_camera2_abort_captures_title"
+ android:entries="@array/pref_camera2_abort_captures_entries"
+ android:entryValues="@array/pref_camera2_abort_captures_entryvalues"
+ android:layout="@layout/preference"
+ android:summary="%s"/>
+
</PreferenceCategory>
</PreferenceScreen>
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index 5864a9193..e5a65c564 100755
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -3030,6 +3030,16 @@ public class CaptureModule implements CameraModule, PhotoController,
throw new RuntimeException("Time out waiting to lock camera closing");
}
Log.d(TAG, "Closing camera: " + mCameraDevice[i].getId());
+
+ if (isAbortCapturesEnable()) {
+ mCaptureSession[i].abortCaptures();
+ Log.d(TAG, "Closing camera call abortCaptures ");
+ }
+ if (isSendRequestAfterFlushEnable()) {
+ Log.v(TAG, "Closing camera call setRepeatingRequest");
+ mCaptureSession[i].setRepeatingRequest(mPreviewRequestBuilder[i].build(),
+ mCaptureCallback, mCameraHandler);
+ }
mCameraDevice[i].close();
mCameraDevice[i] = null;
mCameraOpened[i] = false;
@@ -3056,6 +3066,8 @@ public class CaptureModule implements CameraModule, PhotoController,
} catch (InterruptedException e) {
mCameraOpenCloseLock.release();
throw new RuntimeException("Interrupted while trying to lock camera closing.", e);
+ } catch (CameraAccessException e) {
+ e.printStackTrace();
} finally {
mCameraOpenCloseLock.release();
}
@@ -4607,6 +4619,10 @@ public class CaptureModule implements CameraModule, PhotoController,
mUI.clearFocus();
mUI.hideUIwhileRecording();
mCameraHandler.removeMessages(CANCEL_TOUCH_FOCUS, mCameraId[cameraId]);
+ if (isAbortCapturesEnable()) {
+ mCaptureSession[cameraId].abortCaptures();
+ Log.d(TAG, "startRecordingVideo call abortCaptures befor close preview ");
+ }
mState[cameraId] = STATE_PREVIEW;
mControlAFMode = CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE;
mIsAutoFocusStarted = false;
@@ -5189,6 +5205,36 @@ public class CaptureModule implements CameraModule, PhotoController,
resumeVideoRecording();
}
+ private boolean isEISDisable() {
+ boolean result = true;
+ String value = mSettingsManager.getValue(SettingsManager.KEY_EIS_VALUE);
+ if (value != null) {
+ result = value.equals(mActivity.getResources().getString(
+ R.string.pref_camera2_eis_entry_value_disable));
+ } else {
+ result = false;
+ }
+ Log.v(TAG, "isEISDisable :" + result);
+ return result;
+ }
+
+ private boolean isAbortCapturesEnable() {
+ boolean result = true;
+ String value = mSettingsManager.getValue(SettingsManager.KEY_ABORT_CAPTURES);
+ if (value != null) {
+ result = value.equals(mActivity.getResources().getString(
+ R.string.pref_camera2_abort_captures_entry_value_enable));
+ } else {
+ result = false;
+ }
+ Log.v(TAG, "isAbortCapturesEnable :" + result);
+ return result;
+ }
+
+ private boolean isSendRequestAfterFlushEnable() {
+ return PersistUtil.isSendRequestAfterFlush();
+ }
+
private void stopRecordingVideo(int cameraId) {
Log.d(TAG, "stopRecordingVideo " + cameraId);
mStopRecordingTime = System.currentTimeMillis();
@@ -5202,8 +5248,18 @@ public class CaptureModule implements CameraModule, PhotoController,
if (mLiveShotInitHeifWriter != null) {
mLiveShotInitHeifWriter.close();
}
- closePreviewSession();
mIsRecordingVideo = false;
+ if (isEISDisable() && isAbortCapturesEnable()) {
+ try {
+ mCurrentSession.abortCaptures();
+ Log.d(TAG, "stopRecordingVideo call abortCaptures ");
+ } catch (CameraAccessException e) {
+ e.printStackTrace();
+ }
+ }
+ if (!mPaused) {
+ closePreviewSession();
+ }
try {
mMediaRecorder.setOnErrorListener(null);
mMediaRecorder.setOnInfoListener(null);
@@ -5245,7 +5301,9 @@ public class CaptureModule implements CameraModule, PhotoController,
mUI.hideSurfaceView();
mUI.showSurfaceView();
}
- createSessions();
+ if (!mPaused) {
+ createSessions();
+ }
mUI.showUIafterRecording();
mUI.resetTrackingFocus();
mStopRecPending = false;
diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java
index 013fb6775..7085a2726 100755
--- a/src/com/android/camera/SettingsManager.java
+++ b/src/com/android/camera/SettingsManager.java
@@ -163,6 +163,7 @@ public class SettingsManager implements ListMenu.SettingsListener {
public static final String KEY_VIDEO_HDR_VALUE = "pref_camera2_video_hdr_key";
public static final String KEY_CAPTURE_MFNR_VALUE = "pref_camera2_capture_mfnr_key";
public static final String KEY_SENSOR_MODE_FS2_VALUE = "pref_camera2_fs2_key";
+ public static final String KEY_ABORT_CAPTURES = "pref_camera2_abort_captures_key";
public static final String KEY_SAVERAW = "pref_camera2_saveraw_key";
public static final String KEY_ZOOM = "pref_camera2_zoom_key";
public static final String KEY_SHARPNESS_CONTROL_MODE = "pref_camera2_sharpness_control_key";
diff --git a/src/com/android/camera/util/PersistUtil.java b/src/com/android/camera/util/PersistUtil.java
index bbb33a489..49f8f0df7 100755
--- a/src/com/android/camera/util/PersistUtil.java
+++ b/src/com/android/camera/util/PersistUtil.java
@@ -95,6 +95,8 @@ public class PersistUtil {
SystemProperties.getBoolean("persist.sys.camera.perf.skip_memck", false);
private static final boolean PERSIST_ZZHDR_ENABLED =
SystemProperties.getBoolean("persist.sys.camera.zzhdr.enable", false);
+ private static final boolean PERSIST_SEND_REQUEST_AFTER_FLUSH =
+ SystemProperties.getBoolean("persist.sys.camera.send_request_after_flush", false);
private static final int PERSIST_PREVIEW_SIZE =
SystemProperties.getInt("persist.sys.camera.preview.size", 0);
private static final long PERSIST_TIMESTAMP_LIMIT =
@@ -257,6 +259,10 @@ public class PersistUtil {
return PERSIST_ZZHDR_ENABLED;
}
+ public static boolean isSendRequestAfterFlush() {
+ return PERSIST_SEND_REQUEST_AFTER_FLUSH;
+ }
+
public static int getPreviewSize(){
//Read Preview Resolution from adb command
//value: 0(default) - Default value as per snapshot aspect ratio