diff options
-rwxr-xr-x | src/com/android/camera/CaptureModule.java | 14 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsActivity.java | 11 | ||||
-rwxr-xr-x | src/com/android/camera/SettingsManager.java | 48 |
3 files changed, 47 insertions, 26 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java index d4db0b771..d16f9ca96 100755 --- a/src/com/android/camera/CaptureModule.java +++ b/src/com/android/camera/CaptureModule.java @@ -833,6 +833,8 @@ public class CaptureModule implements CameraModule, PhotoController, SettingsManager.KEY_STATS_VISUALIZER_VALUE); if (stats_visualizer != null) { updateStatsView(stats_visualizer,result); + } else { + mUI.updateAWBInfoVisibility(View.GONE); } } }; @@ -2501,6 +2503,7 @@ public class CaptureModule implements CameraModule, PhotoController, } else { enableShutterAndVideoOnUiThread(id); } + Log.d(TAG,"onShutterButtonRelease"); if (mSettingsManager.getSavePictureFormat() == SettingsManager.HEIF_FORMAT) { if (mHeifImage != null) { try { @@ -3118,7 +3121,7 @@ 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) { + } catch (CameraAccessException | IllegalStateException e) { e.printStackTrace(); } finally { mCameraOpenCloseLock.release(); @@ -5180,7 +5183,13 @@ public class CaptureModule implements CameraModule, PhotoController, boolean noNeedEndOfStreamInHFR = mHighSpeedCapture && ((int)mHighSpeedFPSRange.getUpper() >= HIGH_SESSION_MAX_FPS); if (noNeedEndofStreamWhenPause || noNeedEndOfStreamInHFR) { - mMediaRecorder.pause(); + try{ + mMediaRecorder.pause(); + } catch (IllegalStateException e){ + e.printStackTrace(); + mMediaRecorderPausing = false; + } + } else { setEndOfStream(false, false); } @@ -5702,6 +5711,7 @@ public class CaptureModule implements CameraModule, PhotoController, + mActivity.getStorageSpaceBytes()); return; } + Log.d(TAG,"onShutterButtonClick"); if (mIsRecordingVideo) { if (mUI.isShutterEnabled()) { diff --git a/src/com/android/camera/SettingsActivity.java b/src/com/android/camera/SettingsActivity.java index 3fef92493..45878e243 100755 --- a/src/com/android/camera/SettingsActivity.java +++ b/src/com/android/camera/SettingsActivity.java @@ -160,11 +160,12 @@ public class SettingsActivity extends PreferenceActivity { updateManualWBSettings(); } - if (pref.getKey().equals(SettingsManager.KEY_VIDEO_QUALITY) || - pref.getKey().equals(SettingsManager.KEY_DIS) || + if (pref.getKey().equals(SettingsManager.KEY_DIS) || pref.getKey().equals(SettingsManager.KEY_EIS_VALUE)) { - updatePreference(SettingsManager.KEY_VIDEO_ENCODER); + mSettingsManager.filterEISVideQualityOptions(); + updatePreference(SettingsManager.KEY_VIDEO_QUALITY); } + } } }; @@ -804,14 +805,14 @@ public class SettingsActivity extends PreferenceActivity { pref.setEntries(mSettingsManager.getEntries(key)); pref.setEntryValues(mSettingsManager.getEntryValues(key)); String values = mSettingsManager.getValue(key); + Set<String> valueSet = new HashSet<String>(); if (values != null) { - Set<String> valueSet = new HashSet<String>(); String[] splitValues = values.split(";"); for (String str : splitValues) { valueSet.add(str); } - pref.setValues(valueSet); } + pref.setValues(valueSet); } } } diff --git a/src/com/android/camera/SettingsManager.java b/src/com/android/camera/SettingsManager.java index 532eae8ec..8e554594a 100755 --- a/src/com/android/camera/SettingsManager.java +++ b/src/com/android/camera/SettingsManager.java @@ -1091,9 +1091,6 @@ public class SettingsManager implements ListMenu.SettingsListener { filterVideoEncoderProfileOptions(); } else if (pref.getKey().equals(KEY_PICTURE_FORMAT)) { filterHeifSizeOptions(); - } else if (pref.getKey().equals(KEY_DIS) || - pref.getKey().equals(KEY_EIS_VALUE)) { - filterVideoEncoderOptions(); } } @@ -1264,6 +1261,27 @@ public class SettingsManager implements ListMenu.SettingsListener { } } + private boolean getEISEnabled() { + boolean result = false; + ListPreference disPref = mPreferenceGroup.findPreference(KEY_DIS); + ListPreference eisPref = mPreferenceGroup.findPreference(KEY_EIS_VALUE); + if (disPref != null && eisPref != null) { + result = ("on".equals(disPref.getValue()) && + !("disable".equals(eisPref.getValue()))); + } + return result; + } + + public void filterEISVideQualityOptions() { + ListPreference videoQualityPref = mPreferenceGroup.findPreference(KEY_VIDEO_QUALITY); + if (videoQualityPref == null) return; + videoQualityPref.reloadInitialEntriesAndEntryValues(); + if (filterUnsupportedOptions(videoQualityPref, getSupportedVideoSize( + getCurrentCameraId()))) { + mFilteredKeys.add(videoQualityPref.getKey()); + } + } + private void filterChromaflashPictureSizeOptions() { String scene = getValue(SettingsManager.KEY_SCENE_MODE); ListPreference picturePref = mPreferenceGroup.findPreference(KEY_PICTURE_SIZE); @@ -1765,6 +1783,7 @@ public class SettingsManager implements ListMenu.SettingsListener { StreamConfigurationMap map = mCharacteristics.get(cameraId).get( CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP); Size[] sizes = map.getOutputSizes(MediaRecorder.class); + boolean eisEnabled = getEISEnabled(); boolean isHeifEnabled = getSavePictureFormat() == HEIF_FORMAT; VideoCapabilities heifCap = null; if (isHeifEnabled) { @@ -1786,6 +1805,13 @@ public class SettingsManager implements ListMenu.SettingsListener { continue; } } + if (eisEnabled) { + // eis didn`t support less than 720P + if (Math.min(sizes[i].getWidth(),sizes[i].getHeight()) < 720 || + Math.max(sizes[i].getWidth(),sizes[i].getHeight()) < 1280) { + continue; + } + } if (CameraSettings.VIDEO_QUALITY_TABLE.containsKey(sizes[i].toString())) { Integer profile = CameraSettings.VIDEO_QUALITY_TABLE.get(sizes[i].toString()); if (profile != null) { @@ -1988,22 +2014,6 @@ public class SettingsManager implements ListMenu.SettingsListener { } } - ListPreference videoQuality = mPreferenceGroup.findPreference(KEY_VIDEO_QUALITY); - String videoSize = videoQuality.getValue(); - int indexX = videoSize.indexOf('x'); - int width = Integer.parseInt(videoSize.substring(0, indexX)); - int height = Integer.parseInt(videoSize.substring(indexX + 1)); - // Video quality less than 720P - boolean isLess720P = width < 1280 && height < 720; - - ListPreference disPref = mPreferenceGroup.findPreference(KEY_DIS); - ListPreference eisPref = mPreferenceGroup.findPreference(KEY_EIS_VALUE); - if (isLess720P && - "on".equals(disPref.getValue()) && - !("disable".equals(eisPref.getValue()))) { - supported.remove("mpeg-4-sp"); - } - return supported; } |