diff options
| author | Julian Veit <claymore1298@gmail.com> | 2022-03-20 00:06:45 +0100 |
|---|---|---|
| committer | Julian Veit <claymore1298@gmail.com> | 2022-03-20 00:06:45 +0100 |
| commit | d250e4a60f3b6219c6925534629eee12834a92b8 (patch) | |
| tree | 52fb90369927e24dc962b6ec283f6a3f710f7a6c /src/com/android/camera/CaptureModule.java | |
| parent | ef111dceb9e3fce395bff4f6a4ef1591c701e80c (diff) | |
| parent | 8c444160bd565319468cce5bfdcfc11d20e8b7cb (diff) | |
Merge branch 'lineage-18.1' of https://github.com/LineageOS/android_packages_apps_Snap into HEADHEADs12.1
Change-Id: Ia09760085480a6a028c8969f16f503070ab816e5
Diffstat (limited to 'src/com/android/camera/CaptureModule.java')
| -rwxr-xr-x[-rw-r--r--] | src/com/android/camera/CaptureModule.java | 135 |
1 files changed, 104 insertions, 31 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index 7f546fdf7..b7773c873 100644..100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -30,6 +30,7 @@ import android.content.SharedPreferences; import android.content.DialogInterface; import android.content.Intent; import android.content.res.Configuration; +import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.ImageFormat; import android.graphics.Matrix; @@ -133,6 +134,8 @@ import com.android.camera.util.VendorTagUtil; import org.codeaurora.snapcam.R; import org.codeaurora.snapcam.filter.ClearSightImageProcessor; +import org.lineageos.quickreader.ScannerActivity; + import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; @@ -557,7 +560,7 @@ public class CaptureModule implements CameraModule, PhotoController, private boolean[] mCameraOpened = new boolean[MAX_NUM_CAM]; private CameraDevice[] mCameraDevice = new CameraDevice[MAX_NUM_CAM]; private String[] mCameraId = new String[MAX_NUM_CAM]; - private String[] mSelectableModes = {"Video", "HFR", "Photo", "Bokeh", "SAT", "ProMode"}; + private String[] mSelectableModes = {"Video", "HFR", "Photo", "Bokeh", "SAT", "ProMode", "QR"}; private ArrayList<SceneModule> mSceneCameraIds = new ArrayList<>(); private SceneModule mCurrentSceneMode; private int mNextModeIndex = 1; @@ -570,7 +573,8 @@ public class CaptureModule implements CameraModule, PhotoController, DEFAULT, RTB, SAT, - PRO_MODE + PRO_MODE, + QR, } public enum MFNRSupportValues { @@ -604,6 +608,7 @@ public class CaptureModule implements CameraModule, PhotoController, private boolean mExistAECWarmTag = true; private boolean mExistAECFrameControlTag = true; + private static final long SDCARD_SIZE_LIMIT = 4000 * 1024 * 1024L; private static final String sTempCropFilename = "crop-temp"; private static final int REQUEST_CROP = 1000; private int mIntentMode = INTENT_MODE_NORMAL; @@ -954,22 +959,28 @@ public class CaptureModule implements CameraModule, PhotoController, mPreviewCaptureResult = result; } updateCaptureStateMachine(id, result); - Integer ssmStatus = result.get(ssmCaptureComplete); - if (ssmStatus != null) { - Log.d(TAG, "ssmStatus: CaptureComplete is " + ssmStatus); - updateProgressBar(true); - } - Integer procComplete = result.get(ssmProcessingComplete); - if (procComplete != null && ++mCaptureCompleteCount == 1) { - Log.d(TAG, "ssmStatus: ProcessingComplete is " + procComplete); - mCaptureCompleteCount = 0; - mSSMCaptureCompleteFlag = true; - mActivity.runOnUiThread(new Runnable() { - @Override - public void run() { - stopRecordingVideo(getMainCameraId()); + if (isSSMEnabled()) { + try { + Integer ssmStatus = result.get(ssmCaptureComplete); + if (ssmStatus != null) { + Log.d(TAG, "ssmStatus: CaptureComplete is " + ssmStatus); + updateProgressBar(true); } - }); + Integer procComplete = result.get(ssmProcessingComplete); + if (procComplete != null && ++mCaptureCompleteCount == 1) { + Log.d(TAG, "ssmStatus: ProcessingComplete is " + procComplete); + mCaptureCompleteCount = 0; + mSSMCaptureCompleteFlag = true; + mActivity.runOnUiThread(new Runnable() { + @Override + public void run() { + stopRecordingVideo(getMainCameraId()); + } + }); + } + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } } } @@ -1818,6 +1829,10 @@ public class CaptureModule implements CameraModule, PhotoController, if (!HFR_RATE.equals("")) { mSettingsManager.setValue(SettingsManager.KEY_VIDEO_HIGH_FRAME_RATE, HFR_RATE); } + if (!mSettingsManager.isHFRSupportedOnCurrentResolution()) { + Toast.makeText(mActivity, R.string.hfr_unsupported_current_resolution, + Toast.LENGTH_LONG).show(); + } createSessionForVideo(cameraId); break; default: @@ -2334,11 +2349,20 @@ public class CaptureModule implements CameraModule, PhotoController, mSettingsManager = SettingsManager.getInstance(); mSettingsManager.createCaptureModule(this); mSettingsManager.registerListener(this); - if (isBackCameraId()) { - CURRENT_ID = BACK_MODE; - } else { - CURRENT_ID = FRONT_MODE; + + SceneModule module; + for (int i = 0; i < mSelectableModes.length; i++) { + module = new SceneModule(); + module.mode = CameraMode.values()[i]; + mSceneCameraIds.add(module); + if (module.mode == CURRENT_MODE) { + mNextModeIndex = i; + mCurrentModeIndex = i; + } } + mCurrentSceneMode = mSceneCameraIds.get(mCurrentModeIndex); + CURRENT_ID = mCurrentSceneMode.getNextCameraId(CURRENT_MODE); + mSettingsManager.init(); mFirstPreviewLoaded = false; Log.d(TAG, "init"); @@ -2349,12 +2373,6 @@ public class CaptureModule implements CameraModule, PhotoController, for (int i = 0; i < MAX_NUM_CAM; i++) { mState[i] = STATE_PREVIEW; } - SceneModule module; - for (int i = 0; i < mSelectableModes.length; i++) { - module = new SceneModule(); - module.mode = CameraMode.values()[i]; - mSceneCameraIds.add(module); - } mPostProcessor = new PostProcessor(mActivity, this); mFrameProcessor = new FrameProcessor(mActivity, this); @@ -2430,6 +2448,7 @@ public class CaptureModule implements CameraModule, PhotoController, removeList[CameraMode.DEFAULT.ordinal()] = false; removeList[CameraMode.VIDEO.ordinal()] = false; removeList[CameraMode.PRO_MODE.ordinal()] = false; + removeList[CameraMode.QR.ordinal()] = false; if (facing == CameraCharacteristics.LENS_FACING_FRONT) { CaptureModule.FRONT_ID = cameraId; mSceneCameraIds.get(CameraMode.DEFAULT.ordinal()).frontCameraId = cameraId; @@ -2445,6 +2464,7 @@ public class CaptureModule implements CameraModule, PhotoController, mSceneCameraIds.get(CameraMode.DEFAULT.ordinal()).rearCameraId = cameraId; mSceneCameraIds.get(CameraMode.VIDEO.ordinal()).rearCameraId = cameraId; mSceneCameraIds.get(CameraMode.PRO_MODE.ordinal()).rearCameraId = cameraId; + mSceneCameraIds.get(CameraMode.QR.ordinal()).rearCameraId = cameraId; if (mSettingsManager.isHFRSupported()) { // filter HFR mode removeList[CameraMode.HFR.ordinal()] = false; mSceneCameraIds.get(CameraMode.HFR.ordinal()).rearCameraId = cameraId; @@ -4566,6 +4586,7 @@ public class CaptureModule implements CameraModule, PhotoController, mSoundPlayer = SoundClips.getPlayer(mActivity); } + updateSaveStorageState(); setDisplayOrientation(); if (!resumeFromRestartAll) { startBackgroundThread(); @@ -4933,6 +4954,9 @@ public class CaptureModule implements CameraModule, PhotoController, return; } Log.d(TAG, "onSingleTapUp " + x + " " + y); + + mUI.closeModeSwitcher(true); + int currentId = mCurrentSceneMode.getCurrentId(); if(mLockAFAE) { mLockAFAE = false; @@ -5288,6 +5312,13 @@ public class CaptureModule implements CameraModule, PhotoController, } @Override + public void onSwitchSavePath() { + mSettingsManager.setValue(SettingsManager.KEY_CAMERA_SAVEPATH, "1"); + RotateTextToast.makeText(mActivity, R.string.on_switch_save_path_to_sdcard, + Toast.LENGTH_SHORT).show(); + } + + @Override public void onShutterButtonFocus(boolean pressed) { if (!pressed && mLongshotActive) { Log.d(TAG, "Longshot button up"); @@ -6486,7 +6517,12 @@ public class CaptureModule implements CameraModule, PhotoController, String title = createName(dateTaken); String filename = title + CameraUtil.convertOutputFormatToFileExt(outputFileFormat); String mime = CameraUtil.convertOutputFormatToMimeType(outputFileFormat); - String path = Storage.DIRECTORY + '/' + filename; + String path; + if (Storage.isSaveSDCard() && SDCard.instance().isWriteable()) { + path = SDCard.instance().getDirectory() + '/' + filename; + } else { + path = Storage.DIRECTORY + '/' + filename; + } mCurrentVideoValues = new ContentValues(9); mCurrentVideoValues.put(MediaStore.Video.Media.TITLE, title); mCurrentVideoValues.put(MediaStore.Video.Media.DISPLAY_NAME, filename); @@ -6691,6 +6727,9 @@ public class CaptureModule implements CameraModule, PhotoController, maxFileSize = requestedSizeLimit; } + if (Storage.isSaveSDCard() && maxFileSize > SDCARD_SIZE_LIMIT) { + maxFileSize = SDCARD_SIZE_LIMIT; + } Log.i(TAG, "MediaRecorder setMaxFileSize: " + maxFileSize); try { mMediaRecorder.setMaxFileSize(maxFileSize); @@ -6788,6 +6827,8 @@ public class CaptureModule implements CameraModule, PhotoController, Log.d(TAG,"onShutterButtonClick"); + mUI.closeModeSwitcher(true); + if (mCurrentSceneMode.mode == CameraMode.HFR || mCurrentSceneMode.mode == CameraMode.VIDEO) { if (mSettingsManager.isLiveshotSupported(mVideoSize,mSettingsManager.getVideoFPS())){ @@ -8178,6 +8219,10 @@ public class CaptureModule implements CameraModule, PhotoController, } Log.d(TAG, "CaptureModule onSettingsChanged, key = " + key); switch (key) { + case SettingsManager.KEY_CAMERA_SAVEPATH: + Storage.setSaveSDCard(value.equals("1")); + mActivity.updateStorageSpaceAndHint(); + continue; case SettingsManager.KEY_JPEG_QUALITY: estimateJpegFileSize(); continue; @@ -8644,7 +8689,7 @@ public class CaptureModule implements CameraModule, PhotoController, } mUI.showUIafterRecording(); if (what == MediaRecorder.MEDIA_RECORDER_ERROR_UNKNOWN) { - // We may have run out of storage space. + // We may have run out of space on the sdcard. mActivity.updateStorageSpaceAndHint(); } else { warningToast("MediaRecorder error. what=" + what + ". extra=" + extra); @@ -8675,6 +8720,11 @@ public class CaptureModule implements CameraModule, PhotoController, return bytes; } + private void updateSaveStorageState() { + Storage.setSaveSDCard(mSettingsManager.getValue(SettingsManager + .KEY_CAMERA_SAVEPATH).equals("1")); + } + public void startPlayVideoActivity() { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(mCurrentVideoUri, @@ -8943,6 +8993,13 @@ public class CaptureModule implements CameraModule, PhotoController, if (mCurrentSceneMode.mode == mSceneCameraIds.get(mode).mode) { return -1; } + if (mSceneCameraIds.get(mode).mode == CameraMode.QR) { + mUI.closeModeSwitcher(true); + Intent intent = new Intent(mActivity, ScannerActivity.class); + mActivity.startActivity(intent); + // Don't change the selected item in modeswitcher + return -1; + } setCameraModeSwitcherAllowed(false); setNextSceneMode(mode); SceneModule nextSceneMode = mSceneCameraIds.get(mode); @@ -8952,12 +9009,16 @@ public class CaptureModule implements CameraModule, PhotoController, nextSceneMode.mode == CameraMode.SAT || nextSceneMode.mode == CameraMode.PRO_MODE)) { mSettingsManager.setValue(SettingsManager.KEY_FRONT_REAR_SWITCHER_VALUE, "rear"); + mUI.setFrontBackSwitcherDrawable(); } else { restartAll(); } updateZoomSeekBarVisible(); mUI.updateZoomSeekBar(1.0f); updateZoom(); + mUI.closeModeSwitcher(true); + mUI.setCurrentModeIcon(mode); + mUI.setSwitcherAnimationNeeded(true); return 1; } @@ -8995,6 +9056,16 @@ public class CaptureModule implements CameraModule, PhotoController, return mSelectableModes; } + public List<Integer> getCameraModeIconList() { + ArrayList<Integer> cameraModeIcons = new ArrayList<>(); + TypedArray ic = mActivity.getResources() + .obtainTypedArray(R.array.camera_modes_back); + for (SceneModule sceneModule : mSceneCameraIds) { + cameraModeIcons.add(ic.getResourceId(sceneModule.mode.ordinal(), 0)); + } + return cameraModeIcons; + } + private class SceneModule { CameraMode mode = CameraMode.DEFAULT; public int rearCameraId; @@ -9005,7 +9076,8 @@ public class CaptureModule implements CameraModule, PhotoController, int cameraId = isBackCamera() ? rearCameraId : frontCameraId; cameraId = isForceAUXOn(this.mode) ? auxCameraId : cameraId; if ((this.mode == CameraMode.DEFAULT || this.mode == CameraMode.VIDEO || - this.mode == CameraMode.HFR || this.mode == CameraMode.PRO_MODE) + this.mode == CameraMode.HFR || this.mode == CameraMode.PRO_MODE || + this.mode == CameraMode.QR) && (mSettingsManager.isDeveloperEnabled() || swithCameraId != -1)) { String value = mSettingsManager.getValue(SettingsManager.KEY_SWITCH_CAMERA); if (value != null && !value.equals("-1")) { @@ -9022,7 +9094,8 @@ public class CaptureModule implements CameraModule, PhotoController, int cameraId = isBackCamera() ? rearCameraId : frontCameraId; cameraId = isForceAUXOn(this.mode) ? auxCameraId : cameraId; if ((this.mode == CameraMode.DEFAULT || this.mode == CameraMode.VIDEO || - this.mode == CameraMode.HFR || this.mode == CameraMode.PRO_MODE) + this.mode == CameraMode.HFR || this.mode == CameraMode.PRO_MODE || + this.mode == CameraMode.QR) && (mSettingsManager.isDeveloperEnabled() || swithCameraId != -1)) { final SharedPreferences pref = mActivity.getSharedPreferences( ComboPreferences.getLocalSharedPreferencesName(mActivity, |
